我在理解以下代码为何引发错误时遇到问题。
我有一个简单的脚本:
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
这是我的代码的简化版本。
答案 0 :(得分:1)
$!
仅在发生错误时才有意义,因此您的代码声称没有发生错误时就发生了错误。
更改
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($@ || $!);