真实案例(来自caff)举例说明短问题主题:
$CONFIG{'owner'} = q{Peter Palfrader};
$CONFIG{'email'} = q{peter@palfrader.org};
$CONFIG{'keyid'} = [ qw{DE7AAF6E94C09C7F 62AF4031C82E0039} ];
$CONFIG{'keyserver'} = 'wwwkeys.de.pgp.net';
$CONFIG{'mailer-send'} = [ 'testfile' ];
Run Code Online (Sandbox Code Playgroud)
然后在代码中:eval `cat $config`,访问%CONFIG
提供解决一般问题的答案,而不仅仅是示例.
我从来没有完全理解Perl对包名称的解析,但我总是认为以下应该始终有效,假设您从包含它的目录中执行myscript.pl:
myscript.pl (contains the following statement: use Class1::Class2::Class3)
Class1/
Class2/
Class3.pm (contains the following package declaration: package Class1::Class2::Class3;)
Run Code Online (Sandbox Code Playgroud)
但是,这在我的代码中不起作用,因为无法找到Class3.pm.看看@INC,它不包括当前目录,只包含我的Strawberry Perl安装的各种目录.
推荐的解决方法是什么?我想我可以修改@INC,或者我可以开始使用FindBin,但我不确定哪个是最好的.我继承了这段代码并且只是将它迁移到一个新的位置,但它看起来不像旧的代码需要这样的解决方案(我可能是错的,仍在寻找......)