0

この問題の解決を手伝ってください

pre_package_config.pm

use strict;
our %pre_pkg_configs;

$pre_pkg_configs{locDbList}=['default','default_test'];

second.pl

#!/usr/bin/perl
use Expect;
use strict;

our %pre_pkg_configs;

my  $pre_pkg_file = './pre_package_config.pm';

eval {require $pre_pkg_file};

foreach my $db ( $pre_pkg_configs{locDbList} ){
    print $db;
}

出力:

アレイ(0x10092ae88)

になるはずだった:

デフォルトdefault_test

4

1 に答える 1

3

$pre_pkg_configs{locDbList}単一の(スカラー)値です。それを繰り返すと、その1つの値(たまたま配列への参照)が得られます。その配列の内容を反復処理する場合は、次を逆参照する必要があります。

for my $db (@{ $pre_pkg_configs{locDbList} }) {
    print $db;
}

defaultdefault_testこれは、ではなく、を出力することに注意してくださいdefault default_test。後者を取得する最も簡単な方法は次のとおりです。

print join(" ", @{ $pre_pkg_configs{locDbList} }), "\n";

参照の詳細については、を参照してくださいperldoc perlreftut
(また、use warnings;に加えてすべてのファイルに含める必要がありますuse strict;。)

于 2013-01-18T11:49:10.200 に答える