2015-04-27 24 views
1

我簡化我的程序如下瑣碎的片斷,我仍然得到消息Perl的錯誤抱怨名稱「主:: FILE」只能使用一次

名稱只使用了一次「主:: FILE」 :可能錯字......

#!/usr/bin/perl -w 
use strict; 
use autodie qw(open close); 

foreach my $f (@ARGV) { 
    local $/; 
    open FILE, "<", $f; 
    local $_ = <FILE>; # <--- HERE 
    close FILE; 
    print $_; 
} 

,因爲它被用了三次,這顯然是不正確的。無論出於何種原因,只有標記的事件纔算數。

我知道更好的方法來打開文件(使用$文件句柄),但它不支付短腳本,是嗎?那麼我怎樣才能擺脫錯誤的警告?

+2

1.無法重現。 2.爲什麼要添加6個字符這樣的困難?您可以通過將'foreach'改爲'for'來實現。 – ikegami

+0

我無法重現它(使用perl 5.20.2)。如果將'-w'從shebang中刪除並替換爲'use warnings',問題是否仍然存在? – Slade

+0

你的Perl解釋器是什麼版本? 'perl -v' – Borodin

回答

5

按照documentationautodie爲:

BUGS

「只使用一次」 的警告可致命使用具有封裝的文件句柄來產生時autodie或(例如,文件)。標量文件句柄強烈建議。

我在Perl 5.10.1上得到警告,但沒有5.16.3,所以可能還有別的事情發生。