如果在运行脚本时缺少模块,我正在尝试为应用程序提供“人类可读的消息”。但是,在使用 qw 加载模块时,我偶然发现了一个问题。
我尝试了以下方法:
use strict;
...
if ( ! eval { require Proc::Daemon;1; } ) {
push (@install_packages, "Proc::Daemon");
} else {
Proc::Daemon->import(qw( SOCK_STREAM SOMAXCONN ));
}
然而它失败了
Bareword "SOCK_STREAM" not allowed while "strict subs" in use at ./revmon.pl line 144.
Bareword "SOMAXCONN" not allowed while "strict subs" in use at ./revmon.pl line 144.
使用 use 显然不起作用,因为它会给出正常的错误消息
Can't locate Proc/Daemon.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .)
BEGIN failed--compilation aborted at ./revmon.pl line 11.
将 * 添加到裸词也无济于事,因为它只使用一次,这将引发另一个错误并带有使用警告;
当模块可以成功加载时,是否有相同的方法可以解决此问题以使 BAREWORDS 正常工作?