後方参照(キャプチャした部分文字列を正規表現パターンの中で再利用する):
#!/usr/bin/env perl use v5.12; use warnings; # 同じ文字列が連続するパターンがあれば「matched」、なければ「not matched」を表示する sub is_matched { my $_ = shift; if (/([0-9][0-9])1/) { # 2組の数字が連続しているパターンにマッチ(組み合わせは何でもよい) say "matched"; } else { say "not matched"; } } is_matched "121"; # not matched is_matched "3434"; # matched is_matched "555555"; # matched
Perlの文字クラスショートカットがマッチするのは、ASCII文字だけではない:
#!/usr/bin/env perl use v5.12; use warnings; use utf8; # my $_ = '一'; # 漢字の「1」 ← こっちはマッチしない my $_ = '1'; # 全角数字の「1」 if (/d/) { # 数字のショートカット say "matched d"; # "matched"!!! } if (/[0-9]/) { # こっちにはマッチしない say "matched [0-9]"; }