0

Path::Class::Unicode:我必须自己检查错误ufile还是open自动完成?

use Path::Class::Unicode;

my $file = ufile( "filename" );
my $fh = $file->open;
4

1 回答 1

1

ufile只是类的构造函数的一个 wapper,它不应该抛出任何错误。

open方法是IO::File(或IO::Dir,就此而言)的构造函数周围的wapper。newon 方法IO::File可以为无效参数抛出错误,但否则返回文件句柄或 的正常返回值等opensysopen但是,它被包装IO::File为返回有效的文件句柄或undef.

因此,您应该执行自己的错误处理:

my $fh = $file->open or die "Could not open $filename: $!";
# do not use the stringification of $file, as that would be a byte string

考虑到不同操作系统如何处理 unicode 文件名,我不确定 Path::Class::Unicode 是否具有显着优势。通常最好将文件名视为二进制数据,这就是当前open内置函数的工作方式。

于 2013-09-20T08:26:46.347 回答