سؤال
لقد ألقيت نظرة على مصدر تسرع في الشراب وأحب أن أفهم كيف يفعل slurp()
الشغل:
sub slurp {
local( $/, @ARGV ) = ( wantarray ? $/ : undef, @_ );
return <ARGV>;
}
أين يتم فتح الملف؟
المحلول
يرى ARGV
و $/
في بيرلوك بيرلفار.
أنظر أيضا المسار :: الفصل: ملف :: slurp.
نصائح أخرى
ARGV
هو مقبض ، تم فتح الملف ضمنيًا.
يضع هذا المقتطف اسم الملف في @ARGV
. ال ARGV
يفتح FileHandle ضمنيًا الملفات التي تراها @ARGV
. هذا هو نفس FileHandle الذي لا نراه في مشغل الماس <>
نظرًا لأنه FileHandle الافتراضي لهذا المشغل.
هذا هو نفس تعبير بيرل مثل:
my $data = do { local( @ARGV, $/ ) = $file; <> };
لا تنتمي إلى StackOverflow