【发布时间】:2012-12-27 13:44:39
【问题描述】:
为什么
my $i=0;
my @arr=();
sub readall {
foreach (@_) {
$arr[$i] = shift @_;
$i++;
}
}
readall(1, 2, 3, 4, 5);
print "@arr"
和
my $i=0;
my @arr=();
sub readall {
foreach (@_) {
$arr[$i] = shift @_;
print $arr[$i];
$i++;
}
}
readall(1, 2, 3, 4, 5);
只打印三个参数到readall?
为什么这个看起来应该表现相同的函数处理所有五个参数?
sub readall {
foreach (@_) {
print $_;
}
}
readall(1, 2, 3, 4, 5);
这也读取所有五个(但确实以不同的原则运作):
my @arr=();
sub readall {
push(@arr, @_);
}
readall(1, 2, 3, 4, 5);
print "@arr"
【问题讨论】:
-
如果您发布正确的脚本而不是 100 字符长的单行文字,您的帖子会更容易阅读。如果您使用适当的编辑器,您还会获得语法高亮显示。
-
谢谢你们帮了大忙。感谢@Mat 的建议,我会尝试。
标签: perl arguments argument-passing