小编Thi*_*Not的帖子

tar:使用-X(排除文件)时删除前导/成员名称

我收到错误:

Remove leading / from member names 
Run Code Online (Sandbox Code Playgroud)

尝试使用-X和排除文件创建域归档时.如果我删除-X选项,作业将按预期执行.

备份执行

/mnt/15326/s3/backup.sh
Run Code Online (Sandbox Code Playgroud)

tmp dir

/mnt/15326/s3/data
Run Code Online (Sandbox Code Playgroud)

排除文件

/mnt/15326/s3/data/exclude.txt
Run Code Online (Sandbox Code Playgroud)

内容

/mnt/15326/www.domain.com/dir1
/mnt/15326/www.domain.com/dir2
Run Code Online (Sandbox Code Playgroud)

dir备份

/mnt/15326/www.domain.com
Run Code Online (Sandbox Code Playgroud)

命令运行

tar cf /mnt/15326/s3/data/backup_domain.com -X /mnt/15326/s3/data/exclude.txt /mnt/15326/www.domain.com
Run Code Online (Sandbox Code Playgroud)

bash tar

2
推荐指数
1
解决办法
9804
查看次数

如何从Perl脚本中获取输出?

我正在寻找一种方法来在一个声明中完成这个:

./perlscript.pl ./inputFile "some option" > temp.sh; source temp.sh; rm -f temp.sh
Run Code Online (Sandbox Code Playgroud)

temp.sh

export ENV_VAR="some value"
Run Code Online (Sandbox Code Playgroud)

并在上述命令echo $ENV_VAR报告后some value.

我试过了

./perlscript.pl ./inputFile "some option" | source /dev/stdin
Run Code Online (Sandbox Code Playgroud)

并且脚本运行,但source似乎没有奏效; echo $ENV_VAR没有显示.我觉得这非常接近,但我的想法已经用完了.

有任何想法吗?

bash perl

2
推荐指数
1
解决办法
65
查看次数

如何在行号10和25之间打印行?

我有一个文本文件.如何使用Perl在第10行和第25行之间打印所有内容?

perl

2
推荐指数
1
解决办法
93
查看次数

为什么你可以在声明sub foo之前调用foo()和&foo,但你不能调用plain foo?

请解释为什么在函数定义之上调用这些Perl函数的方式决定了它们是否运行.

print "Why does this bare call to foo not run?\n";
foo;
print "When this call to foo() does run?\n";
foo();
print "And this call to &foo also runs?\n";
&foo;

sub foo {
    print "    print from inside function foo:\n";
}

print "And this bare call to foo below the function definition, does run?\n";
foo;
Run Code Online (Sandbox Code Playgroud)

perl

2
推荐指数
1
解决办法
60
查看次数

当正则表达式由冒号分隔时,它意味着什么?

冒号在我在某些生产代码中找到的Perl正则表达式中起什么作用?

if ($r->uri =~ m:/copy/(\d+):) {
    my $ref = $1;
Run Code Online (Sandbox Code Playgroud)

代码正在解析URI,第二行使用捕获的组.

regex perl

2
推荐指数
2
解决办法
121
查看次数

为什么 DBIx::Class::Schema::Loader 将我的表名从复数更改为单数?

我正在使用DBIx::Class::Schema::Loader创建这样的架构:

#!/usr/bin/perl

use strict;
use warnings;

use DBIx::Class::Schema::Loader qw/make_schema_at/;

make_schema_at(
    "Mydb::Schema",
    {debug => 0, dump_directory => "../db/",
    generate_pod => 0,},
    ["dbi:mysql:mydb:localhost:3306", 'mydb', 'password'],
);
Run Code Online (Sandbox Code Playgroud)

我在 MySQL 中的表名是people,但是当我运行此代码时,生成的类名为Mydb::Schema::Result::Person

$ cat Mydb/Schema/Result/Person.pm 
use utf8;
package Mydb::Schema::Result::Person;

# Created by DBIx::Class::Schema::Loader
# DO NOT MODIFY THE FIRST PART OF THIS FILE

use strict;
use warnings;

use base 'DBIx::Class::Core';
__PACKAGE__->table("people");
__PACKAGE__->add_columns(
  "pplid",
  {
    data_type => "smallint",
    extra => { unsigned => 1 },
    is_auto_increment => 1,
    is_nullable => …
Run Code Online (Sandbox Code Playgroud)

mysql perl dbix-class

2
推荐指数
1
解决办法
250
查看次数

正则表达式从标量变量中删除已知数量的字节

我有一个标量变量,$var其中包含10个字节.删除我使用的那10个字节

$var =~ s/^(.{$numberOfbytes})//;
Run Code Online (Sandbox Code Playgroud)

如果少于10个字节,这可以正常工作.但是我希望一次删除超过4500个字节.我怎样才能做到这一点?

regex perl

1
推荐指数
1
解决办法
182
查看次数

Perl系统命令在命令提示符下运行脚本

这是一个非常短的脚本,我试图使用PC的命令提示符来运行一系列脚本.脚本的数量各不相同,但是对于这个例子,假设有10个,编号为0-10.这些脚本是SAS程序文件.我正在使用该system命令,但有一个我无法发现的错误.

use strict; use warnings;

for ( my $i = 0; $i < 10; $i++ )  {
      system "sas -SYSIN $i.sas -ICON -NOSPLASH -LOG 'c:\Users\...' -PRINT 'c:\Users\...' ";
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

"Missing braces on \o{} at "perlscript.pl" line 6, near "sas..."
Run Code Online (Sandbox Code Playgroud)

我在system命令后面的文本周围放置了大括号,但是没有修复它.我也试过括号(),但没有快乐.放入额外的大括号或()在读取文件位置时也会给出"无法识别的转义"错误.

shell perl command-line sas

1
推荐指数
1
解决办法
237
查看次数

无法在@INC中找到WWW/Mechanize.pm

我试图让我在网站上找到的示例代码工作:

    #!/usr/bin/perl

    use v5.10;
    use WWW::Mechanize;
    use WWW::Mechanize::TreeBuilder;

    my $mech = WWW::Mechanize->new;
    WWW::Mechanize::TreeBuilder->meta->apply($mech);

    $mech->get( 'http://htmlparsing.com/' );

    # Find all <h1> tags
    my @list = $mech->find('h1');

    # or this way

    # Now just iterate and process
    foreach (@list) {
        say $_->as_text();
    }
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我收到此消息:

Can't locate WWW/Mechanize.pm in @INC (@INC contains: /Library/Perl/5.16/darwin-thread-multi-2level /Library/Perl/5.16 /Network/Library/Perl/5.16/darwin-thread-multi-2level /Network/Library/Perl/5.16 /Library/Perl/Updates/5.16.2 /System/Library/Perl/5.16/darwin-thread-multi-2level /System/Library/Perl/5.16 /System/Library/Perl/Extras/5.16/darwin-thread-multi-2level /System/Library/Perl/Extras/5.16 .) at test2.pl line 4.
BEGIN failed--compilation aborted at test2.pl line 4.
Run Code Online (Sandbox Code Playgroud)

有没有人对正在发生的事情有任何想法?

perl

1
推荐指数
1
解决办法
1万
查看次数

为什么我的正则表达式不匹配我的输入数据?

我有一列值(字符串),如下所示:

arg123ala
arg345ala_r
thr567por thr789pro
pro1ala,thr2leu
Run Code Online (Sandbox Code Playgroud)

我试图识别那些只满足以下模式的值,并且不存在额外的文本:

three letters-some numbers-three letters 
Run Code Online (Sandbox Code Playgroud)

在前面的示例中,这将匹配第一个值,但不匹配其他三个值,因为它们具有额外的文本位,或者有两个模式的实例由空格或逗号分隔.

我尝试在Perl中使用这样的东西:

if ( $value =~ /^[[:alpha:]]{3}\d{1,9}[[:alpha:]]{3}$) {
    $qualifier = "ok";
}
else {
    $qualifier = "needs cleaning";
}
Run Code Online (Sandbox Code Playgroud)

实际上检查了regexplanet.com中的正则表达式,它在那里工作得很漂亮.但是,当我在我的代码中使用它时,它不匹配我上面列出的任何值,即使是第一个也没有.知道为什么会发生这种情况吗?关于替代方案的任何建议吗?

regex perl

1
推荐指数
1
解决办法
77
查看次数

标签 统计

perl ×9

regex ×3

bash ×2

command-line ×1

dbix-class ×1

mysql ×1

sas ×1

shell ×1

tar ×1