Perl поиск пользовательского файла ввода - PullRequest
0 голосов
/ 17 октября 2018

В настоящее время я пытаюсь принять пользовательский ввод для имени файла, а затем выполнить поиск этого файла.Программа должна корректно завершиться, если она не найдена, а затем продолжить, если она есть.По какой-то причине из исследования, которое я обнаружил, функция "-e" не работает для меня.Я на Mac, если это имеет значение, хотя у меня есть шабан.

#!/usr/bin/perl

use strict;


print "Enter the name of a file: ";
my $userInput = <STDIN>;
my $fileName = '/' . $userInput;

if(-e $fileName) {
  print "File exist.\n";
  die();
} else {
  print "File doesnt exist.\n";
  die();
}

Никогда не заканчивается поиск файла, если он назван правильно или нет.

1 Ответ

0 голосов
/ 17 октября 2018

Проблема в том, что вы также получаете перевод строки как часть имени файла, когда нажимаете клавишу ввода.Вы можете заметить, что если вы печатаете $filename

Вы можете избавиться от него с помощью функции chomp после получения ввода:

chomp($userInput);

Также,Я не уверен, если вы действительно хотите проверить файл в корневом каталоге или в текущем каталоге.Если это в текущем, возможно, вы пропустили точку перед косой чертой: './' . $userInput;

С этими двумя изменениями ваш код должен выглядеть следующим образом:

#!/usr/bin/perl

use strict;


print "Enter the name of a file: ";
my $userInput = <STDIN>;
chomp($userInput);
my $fileName = './' . $userInput;

if(-e $fileName) {
  print "File '$fileName' exist.\n";
  die();
} else {
  print "File '$fileName' doesnt exist.\n";
  die();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...