名前付きキャプチャ
通常はキャプチャした文字列は$1や$2と言うように番号で参照しますが、バージョン5.10からは名前で指定できるようになりました。
?<名前>で名前をつけて、$+{key}で参照します。
use strict;
use warnings;
use v5.10;
while (my $line = <DATA>) {
chomp $line;
if ($line =~ /^(?<key>.*?)\s*=\s*(?<val>.*)$/) {
printf "%s: %s\n", $+{key}, $+{val};
}
}
__DATA__
foo = hoge
bar = fuga
baz = piyo
# 名前付きキャプチャを使わない場合の書き方
use strict;
use warnings;
while (my $line = <DATA>) {
chomp $line;
if ($line =~ /^(.*?)\s*=\s*(.*)$/) {
printf "%s: %s\n", $1, $2;
}
}
__DATA__
foo = hoge
bar = fuga
baz = piyo
