なぜか
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
?への引数のうち 3 つだけを出力します。
同じように動作するように見えるこの関数が、5 つの引数すべてを処理するのはなぜですか?
sub readall {
foreach (@_) {
print $_;
}
}
readall(1, 2, 3, 4, 5);
これも5つすべてを読み取ります(ただし、異なる原則で動作します):
my @arr=();
sub readall {
push(@arr, @_);
}
readall(1, 2, 3, 4, 5);
print "@arr"