Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl错误地抱怨Name";main::FILE";只用一次_Perl_File_Warnings - Fatal编程技术网

Perl错误地抱怨Name";main::FILE";只用一次

Perl错误地抱怨Name";main::FILE";只用一次,perl,file,warnings,Perl,File,Warnings,我将我的程序简化为下面的一个小片段,我仍然得到了消息 名称“main::FILE”仅使用一次:可能的键入错误 #/usr/bin/perl-w 严格使用; 使用autodie qw(开-关); 每个我的$f(@ARGV){ 本地$/; 打开文件,根据forautodie: 虫子 当autodie或Fatal与包文件句柄(例如文件)一起使用时,会生成“仅使用一次”警告。强烈建议使用标量文件句柄 我在Perl 5.10.1上得到了警告,但不是5.16.3,因此可能还有其他原因。1.无法复制。2.为什

我将我的程序简化为下面的一个小片段,我仍然得到了消息

名称“main::FILE”仅使用一次:可能的键入错误

#/usr/bin/perl-w
严格使用;
使用autodie qw(开-关);
每个我的$f(@ARGV){
本地$/;
打开文件,根据for
autodie

虫子

当autodie或Fatal与包文件句柄(例如文件)一起使用时,会生成“仅使用一次”警告。强烈建议使用标量文件句柄


我在Perl 5.10.1上得到了警告,但不是5.16.3,因此可能还有其他原因。

1.无法复制。2.为什么添加6个字符如此困难?实际上可以通过将
foreach
更改为
for
来弥补。我也无法复制它(使用Perl 5.20.2)。如果将
-w
从shebang中删除并替换为
使用警告;
?您的Perl解释器是什么版本的?
Perl-v
@ikegami 2.这并不困难,只是我习惯了旧的方式。而且,
文件
显然是一个文件,它是一个很好的标识符。假设我同意你的观点,
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 $_;
}