这是我关于 SO 的第一个问题,如果它很愚蠢,很抱歉,但是当我最近在生产代码中遇到它时,这真的让我感到困惑。我把我的问题归结为两个代码块,我希望它们做同样的事情,即为每次迭代产生一个随机数:
for my $num (0 .. 5) {
my $id = int rand 10;
print "$id\n";
}
和
for (0 .. 5) {
my $tmp;
my $id = $tmp if $tmp;
$id = int rand 10 unless $id;
print "$id\n";
}
第一个做我期望它做的事情,但第二个给任意数量的迭代提供相同的数字。$tmp
在这种简化中始终未定义,因此它仅用于显示行为,因为省略= $tmp if $tmp
会产生我期望的结果。
我很感激任何关于为什么会发生这种情况的见解。