Ich habe den folgenden Code in meiner Klasse:Wie kann ich einen Code-Ref als Rückruf in Perl verwenden?
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);
}
und ein Skript den folgenden Code enthält:
use strict;
use warnings;
use MyPackage;
my $callback = sub {
my $arg = shift;
print $arg;
};
my $obj = MyPackage->new(callback => $callback);
aber ich erhalte den folgenden Fehler:
Not a CODE reference ...
Was ich bin fehlt? Drucken ref($self->{callback})
zeigt CODE
. Es funktioniert, wenn ich $self->{callback}->($arg)
benutze, aber ich möchte eine andere Weise verwenden, den Code ref. Aufzurufen.
Warum möchten Sie eine andere Möglichkeit, einen Code ref dereferenzieren? Verwenden Sie, was funktioniert und gehen Sie zum nächsten Problem über. :) –