在标量中使用它的包名称访问Perl变量

时间:2018-05-19 15:17:04

标签: perl

在perl中可以使用包名称来调用方法,如下所示:

my $cls = 'PackageName';
$cls->method()

调用PackageName->method()

使用包变量的正确语法是什么,例如: G。 $PackageName::SOME_VAR以同样的方式,包名称为$cls变量?

1 个答案:

答案 0 :(得分:2)

您需要使用以下语法。

use strict;
use warnings;
use feature 'say';

package Foo;
our $bar = 123;

package main;
{
    my $package = 'Foo';
    no strict 'refs';
    say ${"${package}::bar"};
}

${ ... }用于参考。语法说明将符号表中的值与给定名称一起作为标量。内部${package}只是词汇变量$package,花括号{}作为名称分隔符。

关闭严格的引用是很重要的。请记住在尽可能小的范围内做到这一点。