要約 マルチバイト文字を扱うワンライナはとりあえず-CSDとでもしておくと安心。 長文 どう書く?org で バイナリクロック のお題に 解答したら 、あの 小飼弾氏 が さらに短くして下さいました 。うはー! perl -CIO -Mutf8 -le 'print for map { $_ = sprintf "%06b", $_; tr/01/□■/; $_ } (localtime)[2,1];' Perl5.8対応(そうか、-lで $\ 出力だった)はともかく-Cスイッチって何ぞや、と思ったのでperldoc perlrun : −C [number/list] The "−C" flag controls some of the Perl Unicode features. 「Perl5.8.1より前はWin32のワイド版APIを使うためのスイッチだったけど、誰も使わなかったから使い回すことにしたよ」とか中々楽しいことが書いてあり、現在はPerlIOレイヤを操作するスイッチになっているそうです。 以下簡単な説明。 -C(I|O|E|S) -C(I|O|E)はそれぞれ標準(入力|出力|エラー出力)のPerlIOレイヤをUTF-8に設定するオプションです。つまり次のコードと等価になります: binmode STDIN, ':utf8'; # -CI binmode STDOUT, ':utf8'; # -CO binmode STDERR, ':utf8'; # -CE また-CSオプションで、これらをまとめて指定できます。 -C(i|o|D) -C(i|o)はそれぞれ読み出し(<)、書き込み(>)用に開くファイルハンドルに適用されるデフォルトのPerlIOレイヤをUTF-8に指定します。-CDは両者の一括指定。それぞれ open プラグマを使った以下のコードと等価です: use open IN => ':utf8'; # -Ci use open OUT => ':utf8'; # -Co use open ...