Perlでconstant(定数)をhashのキーに使う
2021-04-194 min read
目次
概要
Perlでconstant(定数)をhashのキーに使う方法でハマりました。その時の解決方法です。
ハマった事象
例えば以下のようなコードがあったとします。
use constant VAR_1 => 'var_2';
my $hash_ref = {
    VAR_1 => 'hoge'
};
print $hash_ref;
ここで期待する出力はvar_2をキーとするハッシュ(リファレンス)を想定していましたが、実際にはVAR_1がキーとなっていました。
# 期待していた値
$VAR1 = {
          'var_2' => 'hoge'
        };
# 実際に定義された値
$VAR1 = {
          'VAR_1' => 'hoge'
        };
解決方法
1 括弧をつける
Perlのconstantはサブルーチンと同じ扱いとなるようなので、括弧をつけて呼び出します。
use constant VAR_1 => 'var_2';
my $hash_ref = {
    VAR_1() => 'hoge'
};
print $hash_ref;
# $VAR1 = {
#           'var_2' => 'hoge'
#         };
2 & をつける
use constant VAR_1 => 'var_2';
my $hash_ref = {
    &VAR_1 => 'hoge'
};
print $hash_ref;
# $VAR1 = {
#           'var_2' => 'hoge'
#         };
参考にしたサイト
Recommends
New Posts
Hot posts!
Date
Author