加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何在Perl中访问名称包含在变量中的常量?

发布时间:2020-12-15 23:30:41 所属栏目:大数据 来源:网络整理
导读:我有一组在Perl中声明的常量: use constant C1 = 111; use constant C2 = 222; .. use constant C9 = 999; my $which_constant = "C2"; 如何构造一个Perl表达式,该表达式基于$which_constant,派生一个以该变量的值命名的常量的值 – 例如“222”. 请注意,我
我有一组在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 – 语法错误
> main :: ${which_constant} – 语法错误
> ${* $which_constant} – 返回空值
> * $which_constant – 返回“* main :: C2”
> ${* ${* 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 );

这样,如果您尝试使用未定义的常量,则会出现错误.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读