的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