在以下示例中:
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_one是0.因此,$first_one[$#first_one]是$first_one[0].
另外,$first_one[$#first_one-1]是$first_one[-1],即参考一个数组的最后一个元件的短手方式.
当然,如果将$ [设置为默认值以外的其他值] ,事情就不会有效. 显然,事情是有效的,除非$[是消极的.
最后,您询问代码中是否有任何错误.从我所看到的,你没有使用严格和警告.你应该.