以下是我的代码,请查看。
use strict;
my @people = qw{a b c d e f};
foreach (@people){
print $_,"$people[$_]n";
}
以下是输出,
[~/perl]$ perl test.pl
aa #why the output of $people[$_] is not same with $_?
ba
ca
da
ea
fa
感谢您的询问。
$_
是您正在查看的实际元素。$people[$_]
将$_
元素从@people
中获取。它旨在与数值索引一起使用,因此将其参数数字。取字母并将其"转换"到一个数字仅转换为零,因为它无法将其分解为一个数字。因此,当$_
不是数字时,$people[$_]
只是$people[0]
。如果您尝试了一些列表元素实际上是数字的相同实验,那么您将获得一些更有趣的结果。
尝试:
use strict;
my @people = qw{a b c 3 2 1};
foreach (@people){
print $_,"$people[$_]n";
}
输出:
aa
ba
ca
33
2c
1b
由于在前三种情况下,我们无法将a
,b
或c
作为数字解析,因此我们获得了零元素。然后,我们实际上可以将3
,2
和1
转换为数字,因此我们获得了元素3、2,然后是1。
编辑:如@ikegami的评论中所述,除了use strict
之外,将use warnings
放在文件的顶部,以警告有关此类内容的警告。