コードをモジュール化していますが、sub
元のモジュールから移動すると、次のエラーが発生します。
Couldn't load application from file "foo.pl": Not an ARRAY reference at D.pm line 10.
これは元のファイルでした。現状では、すべて問題ありません。
FormerC.pm
:
package FormerC;
use strict;
my %my_hash = ( key => 'value' );
my @my_array = qw( some strings inside array );
sub problematic_sub {
my ($hash_ref, $array_ref) = @_;
my @an_array = @$array_ref;
return \@an_array;
};
sub uses_problematic_sub {
problematic_sub(\%my_hash, \@my_array);
};
uses_problematic_sub();
1
これらは2つの新しいモジュールです。これらを使用すると、エラーが発生します。
D.pm
:
package D;
use strict;
sub new { bless {}, shift };
sub problematic_sub {
my ($hash_ref, $array_ref) = @_;
my @an_array = @$array_ref;
return \@an_array;
};
1
C.pm
:
package C;
use strict;
use D;
my $d = D->new;
my %my_hash = ( key => 'value' );
my @my_array = qw( some strings inside array );
sub uses_problematic_sub {
$d->problematic_sub(\%my_hash, \@my_array);
};
uses_problematic_sub();
1