我正在使用Sphinx::Search
.
此代码示例是否有更简单的方法来将字符串转换为常量?
use Sphinx::Search;
my $config = {
x => 'SPH_MATCH_EXTENDED2',
};
my $x = $config->{x};
print Sphinx::Search->$x(); # output: 6
我使用了来自如何访问 Perl 中名称包含在变量中的常量?这个例子有效,但是如果我总是使用哈希中的字符串,那么我是否需要将其放入单独的变量中才能以这种方式使用它?
my $x = $config->{x};
print Sphinx::Search->$x(); # output: 6
有没有单行本?
# does not work
print Sphinx::Search->$config->{x}();
您可以创建对该值的引用并立即取消引用它:
Sphinx::Search->${ $config->{x} };
(如果没有参数,则()
是可选的(。
我猜SPH_MATCH_EXTENDED2
是Sphinx::Search
导出的常量的名称。问题是这些是作为没有参数的子例程实现的,因此您只能在 Perl 将裸子例程名称理解为调用或显式调用有效(SPH_MATCH_EXTENDED2()
(的情况下使用它们
最简单的解决方案是完全避免引用哈希值,就像这样
my $config = { x => SPH_MATCH_EXTENDED2 }
之后,您可以只使用
$config->{x}; # 6
而不是调用伪类方法