的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