Perl, кажется, убивает мой массив каждый раз, когда я прочитал файл:Почему вызов этой функции меняет мой массив?
my @files = ("foo", "bar", "baz");
print "Files: " . join(" ", @files) . "\n";
foreach(@files) {
print "The file is $_\n";
func();
}
sub func {
open(READ, "< test.txt");
while(<READ>) {
}
close READ;
}
print "Files: " . join(" ", @files) . "\n";
производит:
Files: foo bar baz
The file is foo
The file is bar
The file is baz
Files:
, но когда я закомментировать func()
, это дает то, что я бы ожидать:
Files: foo bar baz
The file is foo
The file is bar
The file is baz
Files: foo bar baz
Любые идеи, почему это может произойти?
my $ _; (Только 5.10+) - лучший способ сделать это – ysth 2008-12-03 04:37:00
Правда, но дистрибутивы только начинают двигаться до 5.10. Я полагаю, что люди по-прежнему на 5.8 по большей части. – 2008-12-03 13:47:20