這是展示virtue of Impatience的好機會。
程序員喜歡將重複的常量字面值分解出來,並將它們放入常量類型的容器中。 (但我會在這裏只是爲了不從重要組成部分,分散使用的變量。)
use IO::File qw();
my $handle = bless(\*STDOUT => 'IO::File')
or die $OS_ERROR;
# Why not just `$handle = STDOUT`? Code above is necessary
# because using bare STDOUT invokes on IO::Handle only
# which does not have the binmode method.
⋮
$handle->binmode(1);
$handle->print('something');
這看起來不像一個勝利,因爲現在有太多的代碼比以前。如果您決定不再打印至STDOUT
,而是立即打印出真正的文件,則可以立即獲得巨大回報。或者也許你想開球輸出。那麼你只需要改變一行代碼而不是幾行代碼。
my $handle = IO::File->new('/var/log/cgi', 'a')
or die $OS_ERROR;
# method calls on $handle stay the same as before
誰會改變這個想留下評論的人解釋提問者的代碼有問題嗎? – psmears 2010-06-17 11:52:43
我對此非常抱歉...在批准您的答案時,我錯誤地按錯了按鈕*。事實上,接受你不喜歡的答案是毫無意義的。當我意識到錯誤時,我點擊了上,我得到的消息,該按鈕被鎖定,所以我不能進一步改變上/下狀態。讓我知道我可以如何幫助。對不起, – Daniel 2010-06-17 15:17:02
啊,在這種情況下,沒有問題,謝謝你的解釋:-)當我看到有人投入反對票而沒有花時間解釋他們爲什麼認爲某些東西不好時,它有時會使我惱火。但是任何人都可能發生錯誤點擊;-) – psmears 2010-06-17 15:41:49