名前付きキャプチャ
通常はキャプチャした文字列は$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