我已经在一个Perl脚本下面的代码我写:Perl的try/catch块抛出错误Error.pm
#!/usr/bin/perl
use DBI;
use Getopt::Long;
use Time::HiRes;
use Error qw(:try);
....
my $starttime = Time::HiRes::time;
try {
my $dbh = DBI->connect("dbi:Sybase:$server", $username, $password);
$dbh->do("use $database");
my $query="exec OfflineDatabaseReport";
$row = $dbh->selectrow_hashref($query);
$dbh->disconnect();
} catch Error with {
print "boom";
exit 1;
};
my $endtime = Time::HiRes::time;
my $timetaken = $endtime - $starttime;
脚本工作得很好,直到我裹在try...catch
数据访问部分块。现在我得到以下异常抛出:
不能使用字符串(“1316135985.90893”)作为HASH裁判而“严格裁判”在使用中/usr/lib/perl5/site_perl/5.8.8/Error .pm的线217
我也尝试设置:
no strict "refs";
但我仍然得到同样的错误。我是否在使用try/catch
区块时很天真?
从CPAN上该模块的描述:*使用“错误”模块不再推荐,因为其语法糖的黑魔法性质往往会破坏。它的维护者已经停止了积极编写使用它的代码,并阻止人们这样做。请参阅下面的“另请参阅”部分以获取更好的建议。* http://search.cpan.org/~shlomif/Error-0.17016/lib/Error.pm –
@brian - 啊......这个建议彻底打击了我的盲点。随意facepalm。 – Kev
我的意思是,我并不是说这里的某个人可能有一些建议是不可能的,但是我对调查问题的兴趣有点停止在那里:-D –