Perl,动态包含包

前端之家收集整理的这篇文章主要介绍了Perl,动态包含包前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
假设我有一个perl模块文件,我想在运行时动态包含和使用它.所述模块包括一个我需要实例化的类,直到运行时才知道它的名字.

例如,

  1. #inside module.pm
  2.  
  3. package module;
  4.  
  5. sub new {
  6. #setup object
  7. }
  8.  
  9. #inside main.pl
  10.  
  11. #get module.pm as argument
  12. my $module_var = #load reference to module using text argument?
  13. my $module_instance = $module_var->new();

解决方法

这可以在没有eval的情况下完成,如下所示:
  1. my $module_name = 'Some::Module';
  2.  
  3. (my $require_name = $module_name . ".pm") =~ s{::}{/}g;
  4.  
  5. require $require_name;
  6.  
  7. my $obj = $module_name->new();

如果您需要多次执行此操作,只需将该代码包装在子例程中:

  1. sub load_module {
  2. for (@_) {
  3. (my $file = "$_.pm") =~ s{::}{/}g;
  4. require $file;
  5. }
  6. }
  7.  
  8. load_module 'Some::Module','Another::Module';

猜你在找的Perl相关文章