1
是否內置open
函數,基本Perl開放運算符和三參數開放運算符在IO::File#METHODS中描述的全部相同函數?IO :: File使用多少個後端?
是否內置open
函數,基本Perl開放運算符和三參數開放運算符在IO::File#METHODS中描述的全部相同函數?IO :: File使用多少個後端?
是的,沒有。
內置的open
在perldoc -f 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
;-)此外,文檔(您鏈接到)如此說。
像'open'這樣的列表操作符通常被稱爲函數。實際上,它們記錄在「perlfunc」中。 – ikegami