【发布时间】:2021-06-23 20:48:14
【问题描述】:
我不知道 Perl。我正在尝试阅读其他人编写的 Perl 脚本。
脚本使用GetOpt::Long 模块。在代码中的多个点,我看到了对其他构建为字符串的 Perl 脚本的调用,如下所示:
@calls = (
"getopt_AddName.pl -in $first_name -in $last_name -out $full_name",
"getopt_Sort.pl -in $first_name -out $sorted_name -col 1",
"getopt_Join.pl -in $sorted_name -out $all_names_out",
);
源代码中有脚本,分别名为AddName.pl、Sort.pl 和Join.pl。但是,没有带有“getopt”前缀的脚本,即getopt_AddName.pl。
所有这些最终都被称为 Perl 程序,而该前缀永远不会被删除或替换为任何东西:
while($call = shift(@calls)){
print "Executing call: $call\n";
`perl -w $call`;
...
是module_script.pl,使用模块名称作为外部程序script.pl 的前缀,某种Perl 习惯用法,还是这里发生了其他事情?我无法想象这可能是什么。
我已经尝试了很多搜索,但我找不到任何关于此的信息。它不在我找到的任何 Perl 教程中。
【问题讨论】:
-
可能只是作者的约定,绝对不是你经常看到的东西。在我 20 多年的专业 Perl 使用中,我从未见过类似的东西。
-
好吧,这至少消除了一条兔子足迹。谢谢!
-
请注意,不要在命令中使用
perl,而应使用$^X来获取当前使用的相同perl。否则,您最终可能会混合环境。
标签: perl