退出如果perl pm不可用

时间:2016-04-08 12:06:58

标签: perl eval require

概念:库放在我的public_html文件夹中,它的目的是解码字符串。但是如果该库不存在,则停止错误。以前建议的方式是:

eval("require x.pm");

if ($@) {
    print "The library is missing";
}
else{

    BEGIN{
        eval{"use x"};
    }

    1123131323fsdfsfsdfsfgdfgdfgghfghfghfgheterterter ...
    no x;
}

如果库存在,解码工作正常,一切都是“Hunky Dory”。在理论中...如果文件不存在,顶部循环应该打印错误...除了所有发生的事情,我得到一个错误500,因为脚本看到加密的字符串,并确定它不是一个有效的程序。

想知道是不是“$ @”所以我用旗帜试了一下

$set=0;
$set=1 if eval("require x.pm");

if ($set eq 0){
...
..

同样的事情。尝试将代码放入字符串中:

$_="1123131323fsdfsfsdfsfgdfgdfgghfghfghfgheterterter ..."

这没有帮助。所以,任何人都可以对我做错的事情有所了解吗?

1 个答案:

答案 0 :(得分:-1)

看起来你不会以任何方式退出。通过eval(),这是使用exit()执行所需操作的稳定方式。如果$ok失败,require()将不会设置为真值。

my $ok = eval {require 'nofile.pm'; 1};

if (! $ok){
    print "module not found\n";
    exit;
}