【问题标题】:Beginner question - Perl script can't find file初学者问题 - Perl 脚本找不到文件
【发布时间】:2011-01-12 03:57:27
【问题描述】:

我是 Perl 新手,并且创建了一个简单的 Perl 程序。但是,它似乎永远不会在文件系统上找到文件。代码是:

my $filename = 'test.txt';
if (-e $filename)
{
   print "exists";
}
else
{
   print "not found";
}

我也尝试使用文件“test.txt”的确切路径,但它仍然不起作用;它永远找不到文件。有人知道我做错了什么吗?

【问题讨论】:

  • 编写的代码没有任何问题。您确定要从与文件相同的目录执行脚本吗?当您使用完整路径时,您是从文件系统根目录开始的吗?
  • 文件名是什么?如果文件系统区分大小写,并且实际名称为 TeSt.TxT,则找不到该文件。
  • 当您使用完整路径时,您使用的是正斜杠还是反斜杠?如果是反斜杠,你需要转义(加倍)它们吗?

标签: perl


【解决方案1】:

您的代码似乎正确,这意味着“test.txt”确实不存在(或者如果存在,它不在工作目录中)。

例如,如果你有这个:

/home/you/code/test.pl
/home/you/test.txt

然后像这样运行你的代码:

$ cd code
$ perl test.pl

那么你的测试文件就找不到了。

让您的脚本在执行任何操作之前打印当前工作目录可能会有所帮助:

use Cwd;
print getcwd();

... 

【讨论】:

    【解决方案2】:

    写入文件的完整路径。它应该工作。例如:

    folder/files/file.txt
    

    并且可能使用 " 而不是 '

    【讨论】:

      【解决方案3】:

      以下是一些可能出错的可能性:

      1. 关于完整路径:您正在使用 windows 并且只是将完整路径复制到您的字符串中。在这种情况下,不要忘记转义路径中的退格键。例如:C:\myFolder\test.txt 必须像这样放入变量中:my $filename = "C:\\myFolder\\test.txt"
      2. 您的脚本使用了与您的文件所在目录不同的目录。您可以通过以下方式了解脚本的执行位置以及查找相对文件路径test.txt 的位置:

        use strict;
        use Cwd;
        print getcwd;
        

        如果您在错误的文件路径中,您必须在执行脚本之前切换到正确的路径。为此,请使用 shell 命令cd

      3. 您在正确的目录中和/或正在使用正确的完整路径,但文件有另一个名称。您可以使用 perl 找出实际名称。在执行此脚本之前切换到文件所在的目录:

        use strict;
        opendir my $dirh, '.';
        print "'", join ("'\n'", grep $_ ne '.' && $_ ne '..', readdir $dirh), "'\n";
        closedir $dirh;
        

        这会用单引号打印当前目录中的所有文件。从您的文件中复制文件名并在代码中使用它。

      祝你好运! :)

      【讨论】:

        【解决方案4】:

        使用这个脚本:

        my $filename=glob('*.txt');
        print $filename;
        if (-e $filename)
        {
            print "exists";
        }
        else
        {
            print "not found";
        }
        

        【讨论】:

        • 请回复此脚本
        猜你喜欢
        • 2014-06-03
        • 1970-01-01
        • 2011-05-16
        • 2021-02-19
        • 2022-11-16
        • 1970-01-01
        • 2020-07-21
        • 1970-01-01
        • 2022-11-14
        相关资源
        最近更新 更多