camel

是非はさておき、入れるのであれば自動で入れたい。というわけでこちら。

portal shit! : 半角スペース入れてますか?
半角スペース入れるべき、入れないべき?
spacer.pl
#!/usr/local/bin/perl
use strict;
use warnings;
use Encode;
my $east = qr/(?!\p{M})(?:\p{Han}|\p{Katakana}|\p{Hiragana})/;
my $west = qr/(?!\p{M})(?:\p{Latin}|\p{Greek}|\p{Cyrillic})/;
binmode STDOUT, ':utf8';
while(<>){
    $_ = decode 'utf8', $_;
    s/($east)($west)/$1 $2/g;
    s/($west)($east)/$1 $2/g;
    print;
}

ここでは、入出力ともUTF-8を想定しています。

これを使うと、

アップル - Mac OS X - 概要
* Dashboardで、便利なユーティリティウィジェットに手早くアクセス。用が済んだら即座に隠せます。 * Automatorが反復作業を喜んで代行。あなたは単調な作業とは無縁に。 * VoiceOverの高度な技術で、Macが新着メールを読み上げ。 * どんなウインドウもExposéで瞬時に見つけて表示。 * メニューバーはシステムワイド。困ったときには各ウインドウからシステムコントロールにアクセスして選択。

が、

* Dashboard で、便利なユーティリティウィジェットに手早くアクセス。用が済んだら即座に隠せます。 * Automator が反復作業を喜んで代行。あなたは単調な作業とは無縁に。 * VoiceOver の高度な技術で、Mac が新着メールを読み上げ。 * どんなウインドウも Exposé で瞬時に見つけて表示。 * メニューバーはシステムワイド。困ったときには各ウインドウからシステムコントロールにアクセスして選択。

となります。

全角文字との境にはスペースが入りますが、句読点の前後はそのままです。また、Exposé のようにアクセントが入っても正しく処理します。

見ての通り、Character Property を使っているので、現時点では Perl 5 以外に移植するのはちょっと難しいですね。この手の微妙な調整をしたい場合は、今のところ唯一の選択肢です。

仕組みを知りたい人は、perlunicodeを参照のこと。

Dan the Unicoding Perl Monger