我刚开始学习Perl并偶然发现了一个错误,我无法通过谷歌搜索或阅读我正在学习的书来解决这个错误.
我的代码看起来像这样:
use strict;
use warnings;
my @array = (1, 2, 10);
foreach my $i (@array) {
print $array[$i-1];
}
Run Code Online (Sandbox Code Playgroud)
如果我的数组只包含一位数字,那么这种方法很有效.一旦foreach循环达到一个两位数的数字(在这种情况下为10),我会收到一条警告,说"在...中使用未初始化的值",循环停止.如果我尝试对数字做任何事情(添加等)也会发生同样的情况,它适用于单个数字,但会以两位数停止.
我现在无法理解这里发生的事情 - 我猜它与Perl存储数组元素的方式有关,但我找不到任何东西,也不知道要搜索什么.
谁能指出我正确的方向?
我不确定你要做什么,但这不符合你的想法.
my @array = (1, 2, 10);
foreach my $i (@array) {
print $array[$i-1];
}
Run Code Online (Sandbox Code Playgroud)
$i不是像0,1,2,3的索引...取而代之$i是的每个元素@array:1,2,10,所以,$array[$i-1]就是$array[0],$array[1],$array[9].@array没有第九个元素.
如果你想通过每个循环指标的@array,循环是这样的:
for my $idx (0..$#array) {
# 0, 1, 2
print "$idx\n";
}
Run Code Online (Sandbox Code Playgroud)
如果您通过每个要循环元素的@array,像这样的循环:
for my $element (@array) {
# 1, 2, 10
print "$element\n";
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
138 次 |
| 最近记录: |