
Perlでconstant(定数)をhashのキーに使う
2021-04-193 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
Tags
Author