前段时间,我问了一个问题:如何重新定义 Perl 的内置函数?
答案对我很有帮助。我有一个包覆盖 Perl 的“打开”功能,使我能够记录文件访问。
现在我遇到了一个破坏原始代码功能的案例。
use strict;
use warnings;
use Data::Dumper;
sub myopen (*;@) {
my $p;
my $retval = CORE::open($p, $_[1]);
{
no strict;
*{"main::$_[0]"} = $p;
}
return $retval;
}
BEGIN {
*CORE::GLOBAL::open = *myopen;
};
my @a = (1, 2, 3);
open(CHECK, ">dump") or print "UNABLE TO OPEN DUMPER FILE: $!\n";
print CHECK "test\n";
print CHECK Data::Dumper->Dump(\@a);
close CHECK
现在我收到这条消息:
Can't locate object method "CHECK" via package "Data::Dumper"
我如何解决它?