使用我的oneliners,我經常想要在字符串中獲取整個文件。只有核心模塊我知道考慮$file = 'foo'
唯一的解決方案是:使用ony核心模塊在Perl中讀取整個文件的最短途徑
$str = do {local $/; open $fh, '<', $file; <$fh>};
或者
$str = qx{cat $file};
第二種方法是短寫,比較容易理解,但涉及幕後會更加複雜( sys_execve)。
有沒有更好的方法或我不知道的好糖?
使用我的oneliners,我經常想要在字符串中獲取整個文件。只有核心模塊我知道考慮$file = 'foo'
唯一的解決方案是:使用ony核心模塊在Perl中讀取整個文件的最短途徑
$str = do {local $/; open $fh, '<', $file; <$fh>};
或者
$str = qx{cat $file};
第二種方法是短寫,比較容易理解,但涉及幕後會更加複雜( sys_execve)。
有沒有更好的方法或我不知道的好糖?
另一種方式是:
my $file_content = do{local(@ARGV,$/)=$filename;<>};
,很酷吧?這可以通過本地化@ARGV並將$ filename保存爲@ARGV的第一個元素 來實現。空鑽石運營商<>自動 將打開一個文件句柄給@ARGV的第一個元素,即 文件名。如果您需要設置一個PerlIO的層,文件句柄的名字是 ARGV所以你可以用binmode設置層(前檔 閱讀!):
http://perltricks.com/article/21/2013/4/21/Read-an-entire-file-into-a-string
的Perl 6(仍然在阿爾法版本)有一個內置的功能,以吸入文件。也就是說,要將整個文件的 內容讀入標量變量。
my $data = slurp $filename;
有在CPAN一個很好的模塊,這樣做:File::Slurp,完整的文件
# read in a whole file into a scalar variable ($text)
my $text = read_file($filename) ;
也看到了一個簡單而有效的讀/寫/修改[哪有我將整個文件讀入一個字符串?](http://stackoverflow.com/questions/953707/in-perl-how-can-i-read-an-entire-file-into-a-string)和[什麼是在Perl中將文件翻譯成字符串的最佳方式?](http://stackoverflow.com/questio NS/206661 /什麼,是最最好的方式對啜食,一個文件 - 到 - 一個字符串,在-perl的)。 –
秒不短。它只是看起來這樣,因爲你忘了你需要錯誤檢查。打開文件時出現的問題是最常見的錯誤! – ikegami
「有了我的線索,我經常想要在一個字符串中獲取整個文件。」 'perl -0777 -nwE'say $ _'/ path/to/file' – ThisSuitIsBlackNot