正規表現での置換の際に配列を利用する
個人用メモ。
perlで正規表現を用いた置換の際に、$1などの特殊変数が使えるのは常識レベルの話だと思います。
今回は特殊変数で、配列の内容が参照できるかを調べてみました。
my @map = ("a","b","c");
my $input = "2";
say $input;
$input =~ s/(\d)/$map[$1]/g;
say $input;
というソースを動かすと
2
c
という結果が帰ってきて、無事置換できていることが分かります。
他にも試してみたところ、ハッシュは無事置換できました。
リファレンスを通すのは危ないかなと思いましたが、これもいけました。
ただ、関数は置換できず、
&map(2)
という結果になりました。
配列で置換できると、シリアライズされたデータを元に戻す際に便利そうなので、有用性は結構あると思います。