为什么这个Perl IO代码不起作用?

时间:2014-09-29 03:05:04

标签: perl

为什么此代码不起作用:

my $file_handle = $cgi->upload('file');
open my $OUTFILE_FOTO, '>>', "image/$new_file.$extension";
while (<$file_handle>) {
    print OUTFILE_FOTO $_;
}
close($file_handle);
close(OUTFILE_FOTO);

但是这段代码确实有效:

my $file_handle = $cgi->upload('file');
open( OUTFILE_FOTO, '>>', "image/$new_file.$extension" );
while (<$file_handle>) {
    print OUTFILE_FOTO $_;
}
close($file_handle);
close(OUTFILE_FOTO);

2 个答案:

答案 0 :(得分:2)

在第一个示例中,您正在声明并指定标量$OUTFILE_FOTO,但您稍后将其称为赤字OUTFILE_FOTO。在$print

中添加close

答案 1 :(得分:1)

现在应该可以了。当您看到我的$ OUTFILE_FOTO时,您已经创建了一个文件句柄变量,这是实现perl最佳实践的方法之一。但是你已经在程序中提供了Bareword - OUTFILE_FOTO。你可以尝试使用use strict来避免这些错误;并使用警告;

my $file_handle = $cgi->upload('file');
open my $OUTFILE_FOTO, '>>', "image/$new_file.$extension";
while (<$file_handle>) {
    print $OUTFILE_FOTO $_;
}
close($file_handle);
close($OUTFILE_FOTO);