【发布时间】:2016-12-11 03:07:34
【问题描述】:
我一直在尝试从位于System 文件夹中的两个文件夹Handlers 和Games 中加载文件。
它给了我一个错误
Can't use string ("Server/Systems/Handlers/Buddies."...) as an ARRAY ref while "strict refs" in use at Server/ClubPenguin.pm line 247`
这里是代码
method loadSystems {
my @arrHandlers = glob('Server/Systems/Handlers/*.pm');
my @arrGames = glob('Server/Systems/Games/*.pm');
my @arrFiles = ( @arrHandlers, @arrGames );
foreach (@arrFiles) { #Line 247
foreach my $files ( @{$_} ) {
my $strClass = basename( $_, '.pm' );
my $objSystem = $strClass->new($self);
$self->{systems}->{$strClass} = $objSystem;
}
}
my $sysCount = scalar( keys %{ $self->{systems} } );
if ( $sysCount > 0 ) {
$self->{modules}->{logger}->
output( 'Successfully Loaded ' . $sysCount . ' Systems', Logger::LEVELS->{inf} );
}
else {
$self->{modules}->{logger}->
output( 'Failed To Load Any Systems', Logger::LEVELS->{err} );
}
}
【问题讨论】:
-
"不能使用字符串作为 HASH 引用..." "不能使用字符串作为 ARRAY 引用..." 它是什么?错误在哪一行?
-
我发了
foreach (@arrFiles) { #Line 247 -
Can't use string ("Server/Systems/Handlers/Buddies."...) as an ARRAY ref while "strict refs" in use at Server/ClubPenguin.pm line 247 是正确的错误
-
这怎么可能?您没有在运行时加载该模块(至少,不在您发布的代码中),我怀疑您是在编译时加载它。错误信息很清楚:也许您忘记加载“好友”?
-
而且,就像@smarx 在他的comment 中提到的那样,模块的加载是一个单独的问题。
标签: perl