IO::File#METHODS中描述的内置open
函数,基本Perl open运算符和三参数open运算符`是否具有相同的函数?
答案 0 :(得分:6)
是和否。
perldoc -f open
中描述了open
内置内容。此功能非常适合进行实际的,面向文本的工作。它可以使用PerlIO层来对输入流进行自动去编码或编码。
Perl还有另一种打开文件的方法,名为sysopen
。这本质上是围绕C fdopen
的一个非常薄的包装器,包含所有问题和问题。在Perl中,sysopen
被称为
sysopen FILEHANDLE, FILENAME, MODE[, PERMS]
现在,IO::File
提供了一个面向对象的界面来打开文件,并继承自IO::Handle
。 open
方法包含以下code:
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);
}
如您所见,它是open
和sysopen
的包装,因此可以肯定地说这种方法与核心open
不同;-)另外, doc(你链接的)就这么说了。