【问题标题】:Syntax for using variable in package name? [duplicate]在包名称中使用变量的语法? [复制]
【发布时间】:2017-10-01 03:31:16
【问题描述】:

我想对从变量生成的包名称调用方法。我想我以前做过,但似乎我忘记了如何做。这是我想要实现的破碎版本。

my $var = 'Page';
my $p = My::Package::$var->new();

【问题讨论】:

  • 真的不想这样做。
  • 为什么?它有什么问题?
  • 看看重复的问题,阅读Why it's stupid to "use a variable as a variable name",尤其是第二部分。
  • 我刚读过它们,它们似乎不适用于我的情况。不过,谢谢。
  • 当您使用类名时,这不是很重要,但最好不要将类名分成几位,这主要反映了它们在磁盘上的文件结构。你可以写my $class = 'My::Package::Page'my $p = $class->new。 (你甚至可以写 my $var = 'Page'my $p = "My::Package::$var"->new 但这太可怕了。)但是现在你有一个对象 $p,如果不检查它的类你不知道它的方法。

标签: perl


【解决方案1】:

我能够使用Perl, dynamically include package 的答案来完成这项工作

my $module_name = 'Some::Module';
(my $require_name = $module_name . ".pm") =~ s{::}{/}g;
require $require_name;
my $obj = $module_name->new();

【讨论】:

  • 这个答案与问题不符!但由于您声称这是另一个问题的重复,我将强制并关闭您的问题。
猜你喜欢
  • 2013-09-11
  • 2010-12-06
  • 1970-01-01
  • 2015-08-17
  • 1970-01-01
  • 1970-01-01
  • 2019-03-23
  • 2011-12-17
  • 1970-01-01
相关资源
最近更新 更多