0

请帮我解决这个问题

pre_package_config.pm

use strict;
our %pre_pkg_configs;

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

第二个.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}是单个(标量)值。迭代它只会给你一个值(恰好是对数组的引用)。如果要遍历该数组的内容,则需要取消引用:

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 回答