Perl:$\和$array[$\问题
下面是我的代码,请查看Perl:$\和$array[$\问题,perl,Perl,下面是我的代码,请查看 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 谢谢您的提问。$\u是您正在查看的实际元素$people[$\u
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
谢谢您的提问。
$\u
是您正在查看的实际元素$people[$\u]
正在从@people
中获取$\ucode>第th个元素。它旨在与数字索引一起使用,因此它简化了其参数。把一个字母“转换”成一个数字只会转换成零,因为它不能从中解析出一个数字。因此,$people[$\u]
只是$people[0]
,而$\u
不是一个数字。如果你尝试同样的实验,其中一些列表元素实际上是数字的,你会得到一些更有趣的结果
尝试:
输出:
aa
ba
ca
33
2c
1b
因为在前三种情况下,我们无法将a
、b
或c
解析为数字,所以我们得到了第0个元素。然后,我们可以将3
、2
和1
转换为数字,得到元素3、2和1
编辑:正如@ikegami在一篇评论中提到的那样,除了使用严格的之外,在您的文件顶部放置使用警告
,以获得关于这类事情的警告。$\ucode>是您正在查看的实际元素$people[$\u]
正在从@people
中获取$\ucode>第th个元素。它旨在与数字索引一起使用,因此它简化了其参数。把一个字母“转换”成一个数字只会转换成零,因为它不能从中解析出一个数字。因此,$people[$\u]
只是$people[0]
,而$\u
不是一个数字。如果你尝试同样的实验,其中一些列表元素实际上是数字的,你会得到一些更有趣的结果
尝试:
输出:
aa
ba
ca
33
2c
1b
因为在前三种情况下,我们无法将a
、b
或c
解析为数字,所以我们得到了第0个元素。然后,我们可以将3
、2
和1
转换为数字,得到元素3、2和1
编辑:正如@ikegami在评论中提到的那样,除了使用严格的之外,在文件的顶部放置使用警告
,以获得关于此类事情的警告。始终使用使用严格的;使用警告qw(全部)代码>@ikegami,为什么不干脆使用警告代码>?打字比较短。总是使用使用strict;使用警告qw(全部)代码>@ikegami,为什么不干脆使用警告代码>?打字比较短。