$#array如何在Perl中运行?

cHe*_*HeE 1 arrays perl

在以下示例中:

my $info = 'NARIKANRU';
my @first_one = split /,/, $info;
print "$first_one[$#first_one]$first_one[$#first_one-1]\n";
Run Code Online (Sandbox Code Playgroud)

输出是:

NARIKANRUNARIKANRU

我不确定这是否正确,因为只有一个元素,@first_one并且$#first_one是该元素的索引.

鉴于这$#first_one不等于$#first_one - 1,为什么单个元素@first_one被打印两次?

Sin*_*nür 13

输出是正确的.没有逗号,$info所以split返回一个由单个元素组成的列表.

$#first_one是最后一个(在这种情况下也是第一个也是唯一的)元素的索引@first_one.单个元素,$#first_one0.因此,$first_one[$#first_one]$first_one[0].

另外,$first_one[$#first_one-1]$first_one[-1],即参考一个数组的最后一个元件的短手方式.

当然,如果将$ [设置为默认值以外的其他值] ,事情就不会有效. 显然,事情是有效的,除非$[是消极的.

另见perldoc perldata.

最后,您询问代码中是否有任何错误.从我所看到的,你没有使用严格警告.你应该.