$ascii = '[\x00-\x7F]';
$twoBytes = '[\x81-\xFC][\x40-\xFC]';
$string =~ /^(?:$ascii|$twoBytes)*?(?:\Q$key\E)/;

これでマッチした位置をしる方法ないですか?

length $` は、0が返ってきました。

perl v5.6.1