さわだのノート

書籍のお仕事に役立つかもしれない思いつきを記録しています。

RSS: 記事の更新情報 Rss Feed

Perlでクリップボードを利用する

Perlで適当に処理した文字列を、テキストファイルやターミナルに出力させてからコピペすることがよくあるのですが、なんかこれって二度手間で面倒です。「Clipboard」というモジュールを使うとPerlで直接クリップボードに書き込めるようなので、さっそく利用してみることにしました。

以下がサンプルコードです。Mac版です。

#!/usr/bin/Perl

use strict;
use warnings;
use feature qw/say switch/;

use utf8;
use open IO => qw/:utf8 :std/;

use Encode qw/encode decode/;
use Clipboard;

my $str = 'あいう';

# クリップボードに文字列をコピーする
Clipboard->copy(encode('MacJapanese', $str));

# クリップボードの文字列を取り込む
my $paste = Clipboard->paste();
say decode('MacJapanese', $paste);

クリップボードに取り込む前に「MacJapanese」でエンコードしておかないと、文字化けしてしまいます。もちろん、文字列をクリップボードから取り込むときも、MacJapaneseでデコードしないといけません。

MacJapaneseはshift-jisをMac OS用に拡張した文字コードらしいです。cp932のMac版みたいなものでしょうか。最初はUTF-8UTF-8-Macを使っているものだと思っていて、文字化けでいろいろ悩まされました。

Windowsで同じ処理を行う場合は、MacJapaneseの代わりにcp932を入れれば問題なく動くかと思います。実際に試してはいませんが……。

ひとまず、ちゃんと動いてくれたのでこれで良しとしましょう。