Shift_JIS でもエラーにならない Perl 正規表現

Perl プログラミングにおいて、Shift_JISで記載された日本語を含む正規表現を、エラーにならないようにエスケープする方法を紹介します。EUCの場合でも正規表現上の特殊文字を一括でエスケープするのに使用できます。

正規表現エスケープ用関数

sub esc4re{
    my $str = shift;
    $str =~ s/([\x21\x24-\x26\x28-\x2b\x2e\x2f\x3f\x40\x5b-\x5e\x7b-\x7d])/\\$1/g if $str;
    return $str;
}

使用例

my ($teststr, $restr);

$teststr = 'メール';
$restr = &esc4re($teststr);
print "$teststr MATCHED\n" if $teststr =~ /$restr/;