内置open函数,基本Perl打开运算符和IO :: File#METHODS中描述的三参数open运算符`都具有相同的功能吗?
是的,不是.
在open内置的描述perldoc -f open.此功能非常适合进行实际的,面向文本的工作.它可以使用PerlIO层来对输入流进行自动解码或编码.
Perl有另一种打开文件的方法,叫做sysopen.这本质上是围绕C的非常薄的包装fdopen,包含所有问题和问题.在Perl中,sysopen被称为
sysopen FILEHANDLE, FILENAME, MODE[, PERMS]
Run Code Online (Sandbox Code Playgroud)
现在,IO::File提供了一个面向对象的界面来打开文件,并继承自IO::Handle.该open 方法包含以下代码:
sub open {
@_ >= 2 && @_ <= 4 or croak 'usage: $fh->open(FILENAME [,MODE [,PERMS]])';
my ($fh, $file) = @_;
if (@_ > 2) {
my ($mode, $perms) = @_[2, 3];
if ($mode =~ /^\d+$/) {
defined $perms or $perms = 0666;
return sysopen($fh, $file, $mode, $perms);
} elsif ($mode =~ /:/) {
return open($fh, $mode, $file) if @_ == 3;
croak 'usage: $fh->open(FILENAME, IOLAYERS)';
} else {
return open($fh, IO::Handle::_open_mode_string($mode), $file);
}
}
open($fh, $file);
}
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,它是围绕着包装open和sysopen,因此它是安全地说,这种方法是不相同的核心open;-)另外,(给你链接)的文档是这么说的.