perl - 让 perl 脚本使用多个辅助脚本中的一个

标签 perl include perl-module

我有一个要从命令行运行的主程序 mytool.pl。有几个辅助脚本 special1.pl、special2.pl 等,每个脚本都包含几个子例程和一个散列,所有脚本都以相同的名称命名。让我们假设它们被命名为 MySpecialFunction()、AnotherSpecialFunction() 和 %SpecialData。

我希望 mytool 根据命令行选项包含/使用/导入其中一个特殊*.pl 文件的内容,只有一个。例如,用户将执行:

bash> perl mytool.pl  --specialcase=5

mytools 将使用 special5.pl 中的 MySpecialFunction(),并忽略所有其他特殊*.pl 文件。

这可能吗?如何实现?

重要的是要注意选择要使用的特殊文件是在运行时进行的,因此在 mytool.pl 的顶部添加“use”可能不是正确的做法。

请注意,我是一名长期的 C 程序员,而不是 perl 专家;我可能会问一些显而易见的事情。 这是一个一次性项目,将在一个月内化为尘埃。 mytool.pl 和 special?.pl(也不是 perl 本身)在这个简短的项目结束后都不会引起人们的兴趣。因此,我们不关心复杂的或需要学习一些深奥魔法的解决方案。快速和肮脏的首选。我猜 Perl 的模块机制对此有点矫枉过正,但不知道有什么替代方案。

最佳答案

您可以使用散列或数组将 specialcase 的值映射到 .pl 文件和 requiredo他们根据需要。

#!/usr/bin/env perl

use strict; use warnings;

my @handlers = qw(one.pl two.pl);

my ($case) = @ARGV;
$case = 0 unless defined $case;

# check that $case is within range

do $handlers[$case];

print special_function(), "\n";

关于perl - 让 perl 脚本使用多个辅助脚本中的一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10114775/

相关文章:

linux - 删除sed脚本中的特殊字符

perl - 如何访问嵌套 Perl 散列的值?

c - linux服务器上的编译错误(C项目)

c++ - 向第三方提供库时,C++ 包含文件是否存在安全漏洞?

perl - 在 Perl 中解析带双引号的制表符分隔文件

perl - 如何使用我自己编译的 Perl 中供应商打包的模块?

perl - 如何在 Perl 中以编程方式发现 Win32::OLE 对象的属性和方法?

perl - 我可以让 perl 调试器自动显示当前行周围的行吗?

include - 在 Makefile 中为头文件添加目录

windows - 如何在不丢失模块的情况下在 Windows 上更新 Perl?