perlで日本語含むかどうかの判定

正確にはマルチバイト文字があるかどうかの判定

use Encode qw(decode);

my $text = "こんにちは、世界!";
if (length(decode('Shift_JIS', $text)) != length($text)) {
    print "文字列にマルチバイト文字が含まれています\n";
} else {
    print "文字列にマルチバイト文字は含まれていません\n";
}

エンコードされた文字列を decode してから
length 関数を使用して元の文字列とエンコードされた文字列の長さを比較し
異なる場合には文字列にマルチバイト文字が含まれていると判断しています。

UTF-8ならdecode部分を'UTF-8'にします