Ho il seguente codice nella mia classe:Come posso usare un codice ref come callback in Perl?
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);
}
e uno script che contiene il seguente codice:
use strict;
use warnings;
use MyPackage;
my $callback = sub {
my $arg = shift;
print $arg;
};
my $obj = MyPackage->new(callback => $callback);
ma ricevo il seguente errore:
Not a CODE reference ...
Che cosa sono io mancante? La stampa ref($self->{callback})
mostra CODE
. Funziona se uso $self->{callback}->($arg)
, ma mi piacerebbe usare un altro modo di richiamare il codice ref.
Perché vuoi un altro modo per rimuovere un riferimento al codice? Usa ciò che funziona e passa al prossimo problema. :) –