PerlでCP932文字コードの2バイト文字によるマッチングを行う

Perlで全角2バイト文字をマッチングすると、CP932(ShiftJIS)環境では文字区切りが存在しないため、誤判定や文字化けの元になる。
UTF8にコード変換すれば一発で解決するが、機種依存文字などの特殊文字や、複数の区分に重複登録されている文字などの関係で、内容が意図せずに変わってしまう危険性を孕んでいるため、どうしてもコードを変えたくない場合がある。
そこで、全角2バイト文字を1文字として扱うために、以下のページを参考に、ShiftJIS::Regexpモジュールを導入。
ShiftJIS::Regexp - Shift-JISで書かれた正規表現
以下のコードを実行してみる。(文字コードはCP932)

#! C:/Perl/bin/perl

use strict;
use warnings;
use ShiftJIS::Regexp qw(:all);
use Dumpvalue;

my $text = 'あああいいいうううえええおおお';
my $reg_before = '[いお]';
my $reg_after = 'え';

print $text . "\n";
replace(\$text, $reg_before, $reg_after, 'g');
print $text . "\n";

出力は以下のようになる。

あああいいいうううえええおおお
あああえええうううええええええ

文字列置換の他にも、マッチングや分割など、2バイト文字向けのモジュールが揃えられており、使い方は今までとあまり変わらないので、使わない手は無い。