这是展示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