2013-01-06 21 views

回答

6

是的,沒有。

內置的openperldoc -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); 
} 

正如你可以看到,這是一個包裝周圍opensysopen,因此它是安全地說,這種方法是不相同的核心open ;-)此外,文檔(您鏈接到)如此說。

相關問題