为什么Perl不能打开我的文件?

Vij*_*jay 3 perl file-io

我是Perl编码的新手.我在执行一个小脚本时遇到问题: open无法找到我作为参数提供的文件.

该文件可用:

 ls -l DLmissing_months.sql
-rwxr-xr-x   1 tlmwrk61 aimsys      2842 May 16 09:44 DLmissing_months.sql
Run Code Online (Sandbox Code Playgroud)

我的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);
Run Code Online (Sandbox Code Playgroud)

执行Perl脚本:

> new.pl DLmissing_months.sql
Error opening file - No such file or directory
Run Code Online (Sandbox Code Playgroud)

我的Perl脚本有什么问题?

Mar*_*tos 11

单引号不进行插值.DLmissing_months.sql您正在尝试打开一个名为的文件,而不是打开$file_name.使用双引号进行插值.在这种情况下,您可以单独使用该变量:

open( my $fh, '<', $file_name)
Run Code Online (Sandbox Code Playgroud)


Que*_*tin 8

你把$file_name单引号放在里面.单引号是非插值的,因此您尝试读取名为"$ file_name"的文件,而不是名为"存储在$ file_name标量中的任何内容"的文件.

删除引号.

  • 是的,但你为什么要那样做呢?"$ file_name"中的引号是无用的.简单的`$ file_name`完全等效且更干净,可以启动. (4认同)