2015-12-02 60 views
1

我對Perl不是什麼新鮮事,但實際上我已經走了好幾年了。

在我的「回報」潛伏在本網站和其他人,我不禁注意到我曾經這樣做:

open IN, 'filename.txt' or die; 
open OUT, '>filename.new' or die; 
while (<IN>) { 
    print OUT 
} 
close OUT; 
close IN; 

我現在看到的是,標準的做法是現在做到這一點:

open my $IN, '<', 'filename.txt' or die; 
open my $OUT, '>', 'filename.new' or die; 

我的「時,在羅馬,」我努力做的事情的正確方法的忠實粉絲。在那張紙上,我的第一個方法是錯誤的嗎?它有我不知道的影響或風險嗎?

副手一個缺點接近#1,這將彙編(可能運行)在Perl,甚至狹窄開啓:

open IN, 'filename.txt' or die; 
open OUT, '>filename.new' or die; 
while (<NOT_EVEN_CLOSE>) { 
    print OUT 
} 
close OUT; 
close IN; 

另一個可能的原因是,你可以通過$IN爲(?)一個參數?有點像靜態類和單例之間的區別?我正在抓那根吸管。

最後,假設方法2更正確或更好,我是否應該回頭修改舊代碼以在方法論中應用此更改?

另外,在我忙於Perl的繁重日子裏,我仍然處於一種杞人憂天的狀態,所以如果這是一個十年的慣例,請原諒我的無知。

回答

2

IN指的是*IN,它是指當前包中的符號IN。這是全球性的。

my創建詞彙範圍的變量。

將變量的範圍限制在需要的位置是CS的一個基本方面。

它還允許use strict;找到錯別字。

相關問題