Sau đây (không phải là rất Perl-ish) mãLàm thế nào để bạn kiểm tra sự thành công của mở (tập tin) trong 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";
}
sẽ cho kết quả như thế này
directory doesn't exist.
file opened.
failed to write to file.
GLOB(0x...some-hex-digits...)
Tại sao $ fh không tương đương với giả sau cuộc gọi mở? Vì mydir/ không tồn tại, tôi hy vọng nỗ lực mở tệp sẽ không thành công.
Tôi nhận được kết quả tương tự nếu thư mục và tệp tồn tại nhưng tệp chỉ đọc.
Tôi đã thử điều này với Perl 5.10.1 trên Windows 7 x64 và với Perl 5.10.0 trên Fedora-11 Linux.
Tôi đoán kiểm tra xử lý tệp của tôi là sai. Tôi đã cố gắng Google mà không gặp may. Tôi hy vọng nó là một cái gì đó hiển nhiên, nhưng bất kỳ gợi ý hoặc liên kết sẽ được nhiều đánh giá cao.
Xin cảm ơn, Rob.
Mẹo bổ sung: sử dụng 'perldoc -f open' để được trợ giúp về chức năng tích hợp Perl. – dolmen