do FILE генерирует исключение при проверке, существует ли файл - PullRequest
0 голосов
/ 09 октября 2018

У меня проблемы с пониманием того, почему следующий код генерирует ошибки.

У меня есть простой скрипт:

do_test.pl

use strict;
use warnings;

do 'test.pl';
warn 'error 1: ' . $@ if $@;
warn 'error 2: ' . $! if $!;

test.pl

use Path::Tiny;

path('anything')->exists;

Мне не совсем понятно, почему test.pl работает нормально, а do_test.pl выдает ошибку: error 2: No such file or directory

Это упрощенная версия моего кода.

1 Ответ

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

$! имеет смысл только в том случае, если произошла ошибка, поэтому ваш код утверждает, что ошибка произошла, когда ничего не произошло.

Измените

use Path::Tiny;
path('anything')->exists;

на

use Path::Tiny;
path('anything')->exists;
1;

и измените

do 'test.pl';
warn 'error 1: ' . $@ if $@;
warn 'error 2: ' . $! if $!;

на

do('test.pl')
   or die($@ || $!);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...