Perl 更常称为变量声明
Posted
技术标签:
【中文标题】Perl 更常称为变量声明【英文标题】:Perl more often called variable declaration 【发布时间】:2020-11-22 02:04:38 【问题描述】:我必须为一个项目编写脚本。由于我们有结构化的文件夹(在 Linux 环境中),因此可以根据我们创建的每个模块放置脚本。
例如,我正在从事项目 XYZ,对于这个项目,我必须在 Module_XYZ
中编写我的脚本(大多数是 Perl)。所有(公共)模块的路径是/home/shared/Mining/
。
我的项目模块(Module_XYZ
)进入/home/shared/Mining/
。所以我必须在 /home/shared/Mining/Module_XYZ/ 中编写脚本
由于我必须更频繁地(在脚本中)使用此路径,而不是一次又一次地提及此路径,所以我将在脚本开头存储在环境变量中。
our %ENV;
if ( !defined( $ENV'MOD_PATH' ) )
$ENV'MOD_PATH' = "/home/shared/Mining/Module_XYZ/";
在ENV
变量中添加此路径并在需要时调用$ENV'MOD_PATH'
是否是个好主意,
还是我应该将其声明为常量,例如:
use constant MOD_PATH => "/home/shared/Mining/Module_XYZ/";
或 简单地去
$MOD_PATH = "/home/shared/Mining/Module_XYZ/";
需要专家建议。 TIA。
【问题讨论】:
看看***.com/questions/84932/… 【参考方案1】:最好不要在代码库中的任何地方提及/home/shared/Mining
之类的东西,而是使用相对目录并从项目文件夹运行脚本。这将使项目更具可移植性。
如果您的脚本(.pl 文件)在 Module_XYZ
中导入 .pm 文件,那么它应该使用use lib 'Module_XYZ'
设置@INC
,并且脚本应该从/home/shared/Mining
目录或@987654326 的任何位置运行@ 位于。
如果Module_XYZ
包含一些其他文件,那么您应该再次引用它们相对于当前运行脚本的目录,例如(-f Module_XYZ/foo.txt)
。
使用常量或仅使用 my $MOD_PATH = "MODULE_XYZ"
比阅读 $ENVMOD_PATH
好一点,因为如果出现拼写错误或 $MOD_PATH
不在范围内或不存在,则会出现编译错误。
【讨论】:
use lib 'Module_XYZ';
应该是 use FindBin qw( $RealBin ); use lib $RealBin;
(或 "$RealBin/lib"
等)。依赖 .
作为脚本的目录会咬你以上是关于Perl 更常称为变量声明的主要内容,如果未能解决你的问题,请参考以下文章