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-8かUTF-8-Macを使っているものだと思っていて、文字化けでいろいろ悩まされました。
Windowsで同じ処理を行う場合は、MacJapaneseの代わりにcp932を入れれば問題なく動くかと思います。実際に試してはいませんが……。
ひとまず、ちゃんと動いてくれたのでこれで良しとしましょう。