我刚刚使用 Perl 5.14.2在Debian Wheezy上进行了测试。
标量上下文 - 惨遭失败
sub test
{
my $dir = shift;
my $oldDir = cwd();
chdir($dir) or die("Could not chdir() : $!");
my $firstEntry = glob('*');
print "$firstEntry\n";
chdir($oldDir) or die("Could not chdir() : $!");
}
# /tmp/test1 (contains file1 and file2)
test('/tmp/test1); # Display file1 which is expected
# /tmp/test2 (contains file3 and file4)
test('/tmp/test2'); # Display file2 which is not expected
列出上下文(按预期工作)
sub test
{
my $dir = shift;
my $oldDir = cwd();
chdir($dir) or die("Could not chdir() : $!");
(my $firstEntry) = glob('*');
print "$firstEntry\n";
chdir($oldDir) or die("Could not chdir() : $!");
}
# /tmp/test1 (contains file1 and file2)
test('/tmp/test1); # Display file1 which is expected
# /tmp/test2 (contains file3 and file4)
test('/tmp/test2'); # Display file3 which is expected
要在这里恢复,globbuffer
不会被刷新,即使我们超出了调用者范围。
使用 perl 5.22-1,两种情况都按预期工作(标量上下文)。