我有一个用于存储配置的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'。那只是最后一项?为什么不打印整个阵列?
答案 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"