我有以下perl代码:
use strict;
use warnings;
use Test::Cmd::Common;
my $path = "/something/not/available";
my $test = Test::Cmd::Common->new(string => 'File system operations');
eval{
$test->unlink("$path");
};
ok(!$@, "file unlike");
print "done.\n";
Run Code Online (Sandbox Code Playgroud)
$ test-> unlink()行将失败并抛出异常.但问题是:eval没有处理该异常并且代码执行正在被中断.
输出 :
$ perl test.pl
could not unlink files (/something/not/available): No such file or directory
NO RESULT for test at line 561 of /home/y/lib/perl5/site_perl/5.8/Test/Cmd/Common.pm (Test::Cmd::Common::unlink)
from line 9 of test.pl.
Run Code Online (Sandbox Code Playgroud)
eval在这里做得对吗?或者我误解了什么?
F.
use warnings;
use Test::More;
use File::Find::Rule;
use Test::File::Find::Rule;
my $rule = File::Find::Rule->file->name('*.pl')->not_grep(qr/^\s*use\s+strict;/m, sub { 1 });
match_rule_no_result($rule, ".", 'use strict usage');
done_testing();
Run Code Online (Sandbox Code Playgroud)
输出是:
out put :
ok 1 - use strict usage
1..1
Run Code Online (Sandbox Code Playgroud)
它总是通过测试,即使我的脚本不使用strict,就像这个位于"."内的脚本一样.目录.在http://metacpan.org/pod/Test::File::Find::Rule中可以使用相同的代码作为示例
任何线索?
F.
我有这个YAML文件:
name: Firas
dirs: [/bin/, /home/phiras/]
Run Code Online (Sandbox Code Playgroud)
我在perl中使用YAML :: Syck来解析这个文件,我在访问dirs项时遇到问题.我的代码是:
#!/usr/local/bin/perl
use strict;
use warnings;
use YAML::Syck;
use ConfigLoader;
use Data::Dumper;
my $conf = LoadFile("myconf.yml") || die("Error: Open config file \n");
print $conf->{name}, "\n";
my @dirs = $conf->{dirs};
print Dumper @dirs;
foreach(@dirs){
print "$_\n";
}
Run Code Online (Sandbox Code Playgroud)
输出是:
Firas
$VAR1 = [
'/bin/',
'/home/phiras/'
];
ARRAY(0x8470d6c)
正如您所看到的,循环正在打印一个项目,它被视为数组.我是以正确的方式做到的吗?