Вопрос новичка - Perl скрипт не может найти файл - PullRequest
1 голос
/ 12 января 2011

Я новичок в Perl и создал простую программу на Perl.Тем не менее, он никогда не находит файл в файловой системе.Код:

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

Я также пытался использовать точный путь к файлу "test.txt", но он все еще не работает;он никогда не находит файл.Кто-нибудь знает, что я делаю не так?

Ответы [ 4 ]

3 голосов
/ 12 января 2011

Ваш код кажется правильным, что означает, что «test.txt» действительно не существует (или, если он есть, он не находится в рабочем каталоге).

Например, если у вас есть это:

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

И запустите ваш код следующим образом:

$ cd code
$ perl test.pl

Тогда ваш тестовый файл не будет найден.

Может помочь заставить ваш скрипт распечатать текущий рабочий каталог, прежде чем он что-либо сделает:

use Cwd;
print getcwd();

... 
0 голосов
/ 13 апреля 2017

Вот несколько вариантов того, что может быть не так:

  1. Относительно полного пути: вы используете windows и просто скопировали полный путь в вашу строку. В этом случае не забывайте избегать пробелов на вашем пути. Например: C:\myFolder\test.txt необходимо поместить в переменную следующим образом: my $filename = "C:\\myFolder\\test.txt"
  2. Ваш скрипт использует другой каталог, чем тот, в котором находится ваш файл. Вот как вы можете узнать, где ваш скрипт выполняется и где он ищет относительный путь к файлу test.txt:

    use strict;
    use Cwd;
    print getcwd;
    

    Если вы находитесь в неправильном пути к файлу, вам нужно переключиться на правильный путь, прежде чем вы запустите свой скрипт. Для этого используйте команду оболочки cd.

  3. Вы находитесь в правильном каталоге и / или используете правильный полный путь, но у файла есть другое имя. Вы можете использовать Perl, чтобы узнать, каково настоящее имя. Перейдите в каталог, где находится файл, прежде чем выполнять этот скрипт:

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

    Печатает все файлы в текущем каталоге в одинарных кавычках. Скопируйте имя файла из вашего файла и используйте его в коде.

Удачи! :)

0 голосов
/ 21 июня 2016

Напишите полный путь к вашему файлу. Он должен работать. Например:

folder/files/file.txt

и, вероятно, используйте "вместо"

0 голосов
/ 13 ноября 2013

Используйте этот скрипт:

my $filename=glob('*.txt');
print $filename;
if (-e $filename)
{
    print "exists";
}
else
{
    print "not found";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...