我是Perl的新手,并创建了一个简单的Perl程序。但是,它似乎永远不会在文件系统上找到文件。代码是:
my $filename = 'test.txt';
if (-e $filename)
{
print "exists";
}
else
{
print "not found";
}
我还尝试使用文件“test.txt”的确切路径,但它仍然不起作用;它永远不会找到该文件。有人知道我做错了什么吗?
答案 0 :(得分:3)
您的代码似乎是正确的,这意味着“test.txt”确实不存在(或者如果存在,则它不在工作目录中)。
例如,如果你有这个:
/home/you/code/test.pl
/home/you/test.txt
运行你的代码:
$ cd code
$ perl test.pl
然后找不到您的测试文件。
在执行任何操作之前,让脚本打印当前工作目录可能会有所帮助:
use Cwd;
print getcwd();
...
答案 1 :(得分:0)
写下文件的完整路径。它应该工作。例如:
folder/files/file.txt
并且可能使用"而不是'
答案 2 :(得分:0)
以下是可能出错的可能性:
C:\myFolder\test.txt
必须像这样放入变量:my $filename = "C:\\myFolder\\test.txt"
您的脚本使用的目录不是您的文件所在的目录。以下是您如何找到脚本执行位置以及查找相对文件路径的位置test.txt
:< / p>
use strict;
use Cwd;
print getcwd;
如果您在错误的文件路径中,则必须在执行脚本之前切换到正确的文件路径。请使用shell命令cd
。
您位于正确的目录中和/或正在使用正确的完整路径,但该文件具有其他名称。您可以使用perl来查找实际名称。在执行此脚本之前,请转到文件所在的目录:
use strict;
opendir my $dirh, '.';
print "'", join ("'\n'", grep $_ ne '.' && $_ ne '..', readdir $dirh), "'\n";
closedir $dirh;
以单引号打印当前目录中的所有文件。从文件中复制文件名并在代码中使用它。
答案 3 :(得分:-2)
使用此脚本:
my $filename=glob('*.txt');
print $filename;
if (-e $filename)
{
print "exists";
}
else
{
print "not found";
}