おいーっす。今日もちょいネタを投稿するよー。前回 AppleScript から Perl をしばいたので今回は逆をやろうと思ったんだけど osascript でやればいいってだけのネタだったので却下。ただ調べている過程で、
「そういや、こんなコマンドあったねえ」
というコマンドを思い出したのでそいつを使って「Perl でクリップボードの中身をいじるスクリプト」をご紹介。
まあ、内容はバッククオートでターミナルのコマンド叩くだけなんだけどね。使うコマンドは知っている人は知っている。そして私のように忘却の彼方という人もいる「pbpaste」と「pbcopy」です。今回はクリップボード内のテキストを Perl で取り込んで NFC した値をクリップボードに返しています。
ポイントは pbpaste で取得する値を decode することと pbcopy に渡す際にはパイプ経由で標準入出力経由で渡すというところ。まあ Perl からクリップボードをいじるなんてことがある場合は役に立つ、かなぁ??
NFCってなんのこっちゃ? っていう人は是非こちらの頁を参考にしてくださいねー → Unicodeの正規化
# !/usr/bin/perl
use utf8;
use strict;
use warnings;
use Encode;
use Unicode::Normalize;
binmode STDOUT, ":utf8";
binmode STDERR, ":utf8";
binmode STDIN, ":utf8";
# クリップボード内データの取得
my $cbData = decode('utf8',`pbpaste`);
$cbData = NFC($cbData);
# バックスラッシュをエスケープ
$cbData =~ s/\\/\\\\/g;
my $rtValue = `printf "$cbData" | pbcopy`;
exit;