我有一個看的Slurp源,我很想了解如何做slurp()
工作:Perl的Slurp模塊是如何工作的?
sub slurp {
local($/, @ARGV) = (wantarray ? $/ : undef, @_);
return <ARGV>;
}
哪裏文件連開?
我有一個看的Slurp源,我很想了解如何做slurp()
工作:Perl的Slurp模塊是如何工作的?
sub slurp {
local($/, @ARGV) = (wantarray ? $/ : undef, @_);
return <ARGV>;
}
哪裏文件連開?
請注意,File :: Slurp現在被認爲是破壞的,因爲它不知道如何處理編碼,而且速度很慢。參見http://blogs.perl.org/users/leon_timmermans/2013/05/why-you-dont-need-fileslurp.html – 2014-09-19 23:30:02
@briandfoy我已經長大了很喜歡[Path :: Class](https:// metacpan.org/pod/Path::Class)並改變我的建議以反映這一點。 – 2014-09-21 01:44:18
ARGV
是一個句柄,該文件已被隱式打開。
這段代碼將文件名放入@ARGV
。 ARGV
文件句柄隱式地打開它在@ARGV
中看到的文件。這與我們在鑽石運算符<>
中看不到的文件句柄相同,因爲它是該運算符的默認文件句柄。
這是相同的Perl習慣用法爲:
my $data = do { local(@ARGV, $/) = $file; <> };
相關http://stackoverflow.com/q/206661/100754和http://stackoverflow.com/questions/2213485/how-do-i -read-a-files-contents-into-a-perl-scalar我看不到任何理由使用這個模塊。 – 2010-10-25 11:06:44