如何在Perl中访问名称包含在变量中的常量?
我有一组在Perl中声明的常量:
use constant C1 => 111; use constant C2 => 222; .. use constant C9 => 999; my $which_constant = "C2"; 如何构造一个Perl表达式,该表达式基于$which_constant,派生一个以该变量的值命名的常量的值 – 例如“222”. 请注意,我无法更改上述任何条件 – 它们是真实场景的简化:我有一个模块(我无法控制)从中导入这些常量.其中一个常量的名称由用户从命令行提供.我需要访问适当的常量值. 我一直在靠墙撞击(主要围绕各种怪异的glob构造),但它们都不起作用. 附:如果解决方案访问其原生模块中的常量 – 比如My :: Constants :: C2(无需导入它们),甚至更好,但不是必需的 – 我可以使用My :: Constants将正确的常量导入main :: – >进口($which_constant).是的,最重要的是,默认情况下不会导出te常量,因此需要显式的import()调用. 我试过的一些事情: > main :: $which_constant – 语法错误 解决方法
由
constant.pm 定义的常量只是子例程.如果在字符串中包含常量的名称,则可以使用方法调用语法:
#!/usr/bin/perl -l use strict; use warnings; use constant C1 => 111; use constant C2 => 222; print __PACKAGE__->$_ for qw( C1 C2 ); # or print main->$_ for qw( C1 C2 ); 这样,如果您尝试使用未定义的常量,则会出现错误. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |