8
我有我的類下面的代碼:如何在Perl中使用代碼ref作爲回調?
sub new {
my $class = shift;
my %args = @_;
my $self = {};
bless($self, $class);
if (exists $args{callback}) {
$self->{callback} = $args{callback};
}
if (exists $args{dir}) {
$self->{dir} = $args{dir};
}
return $self;
}
sub test {
my $self = shift;
my $arg = shift;
&$self->{callback}($arg);
}
,幷包含以下代碼的腳本:
use strict;
use warnings;
use MyPackage;
my $callback = sub {
my $arg = shift;
print $arg;
};
my $obj = MyPackage->new(callback => $callback);
,但我收到以下錯誤:
Not a CODE reference ...
我是什麼失蹤?印刷ref($self->{callback})
顯示CODE
。它適用於如果我使用$self->{callback}->($arg)
,但我想用另一種方式調用代碼ref。
爲什麼你想要另一種方式取消引用代碼ref?使用什麼工作,並繼續下一個問題。 :) – 2009-02-13 05:38:38