8

クラスに次のコードがあります。


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)しますが、コード参照を呼び出す別の方法を使用したいと思います。

4

1 に答える 1