【发布时间】:2011-03-13 08:14:54
【问题描述】:
以下(不是 Perl 风格的)代码
#!/usr/bin/perl
if (! -e "mydir/")
{
print "directory doesn't exist.\n";
}
open (my $fh, ">", "mydir/file.txt");
if ($fh)
{
print "file opened.\n";
print $fh;
print $fh "some text\n" or die "failed to write to file.\n";
close ($fh);
}
else
{
print "failed to open file.\n";
}
产生这样的输出
directory doesn't exist.
file opened.
failed to write to file.
GLOB(0x...some-hex-digits...)
为什么 $fh 在 open 调用之后不等于 false? 由于 mydir/ 不存在,我预计打开文件的尝试会失败。
如果目录和文件存在,我会得到类似的结果,但文件是只读的。
我已经在 Windows 7 x64 上使用 Perl 5.10.1 以及在 Fedora-11 Linux 上使用 Perl 5.10.0 进行了尝试。
我猜我的文件句柄测试是错误的。 我试过用谷歌搜索这个没有运气。 我希望这是显而易见的,但任何提示或链接将不胜感激。
谢谢, 抢。
【问题讨论】: