"有趣"这个困境。
要在perl中使用lib,你显然要包含"使用lib x"命令......但是如果" x.pm"你能做什么?不存在,(或者服务器管理员删除的机会更正确)
总之,我隐藏了'此文件包含.htaccess和我帐户根目录中的其他文件,即" public_html"文件夹 - 远离窥探眼睛。所以我可以在脚本中设置路径,例如"使用/ home / account / x"一切都很好。
过去,我认为安全措施意味着有时会删除此文件。因此,当脚本运行时,观看者会看到一个光荣的" 500错误"
我试过了:
If (-e 'use /home/account/x'){
use 'home/account/x';
...
}
else{
print "error";
}
但所有这一切都表示它无法在下面的行中找到使用命令"如果"
尝试:
use 'home/account/x' || die ('cannot find file')
但是这种语法错了。这有什么简单的方法吗?
答案 0 :(得分:5)
这与发现错误的时间有关。' use
发生在编译时间。因此 - 你不能完成许多你正常的程序流程。 (有一些例外)。
但是你可以做的是require
在运行时加载东西 - 在那里你可以进行你想要的那种测试。
#!/usr/bin/env perl
use strict;
use warnings;
eval { require "Not_here.pm" };
warn "Couldn't load: $@" if $@;
print "fish";
尽管如此,在import
模块之后,您可能还需要requiring
所需的例程,因为use
会这样做:
BEGIN { require Module; Module->import( LIST ); }
答案 1 :(得分:2)
我使用字符串eval
来检查模块是否存在,如果没有它就可以运行。
our $have_unac = 0;
BEGIN {
eval "use Text::Unaccent::PurePerl";
$have_unac = 1 if (!$@);
}