从perl在外部文件中定义的访问数组

时间:2015-02-20 12:26:55

标签: arrays perl

我有一个用于存储配置的perl pre_installer.conf程序。

use strict;

$VAR::phpmodules = ("php5-curl", "php5-mcrypt", "php-abc");
1;

我已包含此文件并已访问$VAR::phpmodules

require 'pre_installer.conf';
print $VAR::phpmodules;

但它只打印'php-abc'。那只是最后一项?为什么不打印整个阵列?

1 个答案:

答案 0 :(得分:4)

由于

$VAR::phpmodules = ("php5-curl", "php5-mcrypt", "php-abc");

没有做你认为的事情。它分配列表中的最后一个元素。

my $thing = ( "one", "two", "three" );
print $thing;

#prints "three"; 

然而,这是一个非常好的例子,为什么use strict; use warnings;是一个非常好的主意 - 因为警告告诉你:

Useless use of a constant ("one") in void context at line ...
Useless use of a constant ("two") in void context at line ...

尝试:

$VAR::phpmodules = ["php5-curl", "php5-mcrypt", "php-abc"];

将把它变成一个数组引用。 (你必须取消引用它才能打印出来,打印@$VAR::phpmodules

my $thing = [ "one", "two", "three" ];
print @$thing;
#prints onetwothree because no delimiter between array elements. 

或者

@VAR::phpmodules = ("php5-curl", "php5-mcrypt", "php-abc");

e.g。

my @thing = ( "one", "two", "three" );
print @thing;
#prints "onetwothree"