以下行可完美运行
for(my $i=0; $i < ($max_size - $curr_size) ; $i++){
push (@{$_}, 0);
}
但这不是。
push (@{$_}, 0) for (1 .. ($max_size - $curr_size));
它给我这样的错误消息:
Can't use string ("1") as an ARRAY ref while "strict refs" in use at coordReadEasy.pl line 124, <DATA> line 16.
为什么?我该如何解决?
最佳答案
for
的范围版本将$_
设置为每个元素,因此在@{$_}
中,您尝试取消对$_
的引用,就好像它是数组引用一样。这些都是等效的:
for my $x (1..10) {
print "$x\n"
}
for (1..10) {
print "$_\n"
}
print "$_\n" for (1..10);
简单的解决方案是为数组引用创建另一个变量:
push @{$ref}, 0 for 1 .. $max_size - $curr_size;