Perl Path::Class::Unicode和错误处理

Perl Path::Class::Unicode和错误处理,perl,file-io,error-handling,perl-module,Perl,File Io,Error Handling,Perl Module,:我必须自己检查ufile和open是否有错误,还是自动检查 use Path::Class::Unicode; my $file = ufile( "filename" ); my $fh = $file->open; ufile只是类的构造函数的一个wapper,它不应该抛出任何错误 open方法是IO::File(或IO::Dir)的构造函数的一个重要组成部分。IO::File上的new方法可能会对无效参数抛出错误,但否则会返回文件句柄,或正常返回值open、sysopen等。但

:我必须自己检查
ufile
open
是否有错误,还是自动检查

use Path::Class::Unicode;

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

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

open
方法是
IO::File
(或
IO::Dir
)的构造函数的一个重要组成部分。
IO::File
上的
new
方法可能会对无效参数抛出错误,但否则会返回文件句柄,或正常返回值
open
sysopen
等。但是,这被
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是否有显著的好处。通常将文件名视为二进制数据,这就是当前<代码>打开/代码>建库的工作方式。