Perl : $_ and $array[$_] issue

  • 本文关键字:issue and Perl array 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

感谢您的询问。

$_是您正在查看的实际元素。$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

由于在前三种情况下,我们无法将abc作为数字解析,因此我们获得了零元素。然后,我们实际上可以将321转换为数字,因此我们获得了元素3、2,然后是1。

编辑:如@ikegami的评论中所述,除了use strict之外,将use warnings放在文件的顶部,以警告有关此类内容的警告。

最新更新