我是Perl编码的新手。 我在执行一个小脚本时遇到问题: open无法找到我作为参数提供的文件。
该文件可用:
ls -l DLmissing_months.sql
-rwxr-xr-x 1 tlmwrk61 aimsys 2842 May 16 09:44 DLmissing_months.sql
我的Perl脚本:
#!/usr/local/bin/perl
use strict;
use warnings;
my $this_line = "";
my $do_next = 0;
my $file_name = $ARGV[0];
open( my $fh, '<', '$file_name')
or die "Error opening file - $!\n";
close($fh);
执行Perl脚本:
> new.pl DLmissing_months.sql
Error opening file - No such file or directory
我的Perl脚本有什么问题?
答案 0 :(得分:11)
单引号不进行插值。您正在尝试打开名为DLmissing_months.sql
的文件,而不是打开$file_name
。使用双引号进行插值。在这种情况下,您可以单独使用该变量:
open( my $fh, '<', $file_name)
答案 1 :(得分:8)
您已将$file_name
置于单引号内。单引号是非插值的,因此您尝试读取名为“$ file_name”的文件,而不是名为“存储在$ file_name标量中的任何内容”的文件。
删除引号。