Perl   发布时间:2022-04-07  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了perl常量在哪里被它们的值替换?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图在perl中使用常量值并偶然发现以下奇怪的行为:
#!/usr/bin/perl
use strict;
use warnings;

use Data::Dumper;

use constant {
    a => "b"
};

my $c = { a => a };
my %d;
$d{a} = a;

print Dumper($c);
print Dumper(\%d);

将输出

$VAR1 = {
          'a' => 'b'
        };
$VAR1 = {
          'a' => 'b'
        };

常量a被替换为表达式$d {a} = a和a =>的右侧. a,但不在左侧.

我知道常量是使用inlinable subs(documented here)实现的,如果子名称不是预先声明的,则子名称会评估它们的名称(documented here),但我看不出为什么在我的例子中对值进行一次计算,一次对名称在同一行代码中,特别是在散列的赋值中 – a => a可能是=>的结果如果以字母开头,则将左侧网站解释为字符串.

旁注:添加parantheses以使子调用显式生成预期结果:

# ...
my $c = { a() => a }; # or my $c = { a,a };
my %d;
$d{a()} = a;
# ....

输出:

$VAR1 = {
          'b' => 'b'
        };
$VAR1 = {
          'b' => 'b'
        };

(使用perl 5.18测试的所有示例)

解决方法

constant页的末尾,即 CAVEATS,有答案

然后继续您找到的解决方案

然后它也将其拼写为哈希

大佬总结

以上是大佬教程为你收集整理的perl常量在哪里被它们的值替换?全部内容,希望文章能够帮你解决perl常量在哪里被它们的值替换?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: