正規表現での置換の際に配列を利用する

個人用メモ。

perl正規表現を用いた置換の際に、$1などの特殊変数が使えるのは常識レベルの話だと思います。
今回は特殊変数で、配列の内容が参照できるかを調べてみました。


my @map = ("a","b","c");
my $input = "2";
say $input;
$input =~ s/(\d)/$map[$1]/g;
say $input;

というソースを動かすと

2
c

という結果が帰ってきて、無事置換できていることが分かります。

他にも試してみたところ、ハッシュは無事置換できました。
リファレンスを通すのは危ないかなと思いましたが、これもいけました。
ただ、関数は置換できず、

&map(2)

という結果になりました。

配列で置換できると、シリアライズされたデータを元に戻す際に便利そうなので、有用性は結構あると思います。