用于运行任意代码的Perl设计模式

时间:2014-12-01 14:34:34

标签: perl design-patterns

我正在寻找一个好的Perl设计模式来运行编译时未知的代码。方案是我将修补程序应用于大型Java应用程序,这大多只是放置新的类文件,但有些修补程序需要更改配置文件,我想为此使用Perl。此时已经运行了一个Perl脚本,正在选择要应用哪些补丁以及按什么顺序运行的脚本,并且它有大量我希望利用的状态信息,所以理想情况下我会能够在当前脚本的进程空间内运行任意补丁代码(我不预期需要更改任何此状态数据)。不过,我有一些重要的限制:

  • Perl版本是5.8.9,尽管我可以升级
  • 出于法律原因,我只有Perl附带的默认模块可供使用

我想过尝试的一些事情:

  • 让每个子脚本提供一个RunMe.pm模块,该模块将被加载,使用,然后卸载(通过操纵%INC - ugh)
  • 让每个子脚本提供一个RunMe12345.pm模块(基于补丁号的名称),它将被加载,使用,然后在剩余的运行中被忽略(通常只需几分钟)
  • fork每个子脚本,要求或使用RunMe.pm,做任何事情,然后退出
  • 编写一个perl库,然后执行或评估库(虽然我认为使用do仍然需要操作%INC)

在Java中,我会让单独的bug类实现一个通用接口,并有一个工厂来创建所有这些,虽然我不知道编译时实现类的名称,所以我&#d; d求助于Class.forName()。

所有这些都是丑陋的一面,并引导我完全重新考虑设计理念,这可能是正确答案。

0 个答案:

没有答案