φ(.. ) 備忘録
amazonアソシエイト

2013年12月20日金曜日

Cygwin perlでクリップボード操作

前回、Cygwin(32bit)のperl環境がある程度整ったので、今日はクリップボードと連携したperlのツールを作成する。
本ツールはモジュールの「Win32::Clipboard」と「Encode」を使用する。インストールしていない人は、32bit Cygwinでperl設定を参考にしてほしい。
以下の内容をclipboard_sort_uniq.plというファイル名で適当なとこに配置し、デスクトップにショートカットを作成する。
    #!/usr/bin/perl
    #----------------------------------------
    # [Windows用]
    # クリップボードのデータをユニークソートし、
    # 結果をクリップボードに設定する。
    use utf8;
    use Encode;
    use Win32::Clipboard;
    my $clip = Win32::Clipboard();
    exit 1 unless $clip->IsText(); # テキスト以外なら終了する
    my $text = decode("cp932",$clip->GetText()); # テキスト取得
    # 連想配列を使ってユニーク
    my %hash=();
    foreach $rec (split(/\n/,$text)){
        $rec=~s/\r//g;       # LFを削除
        next if($rec eq ""); # スペースは除外
        $hash{$rec}="";
    }
    $text="";
    foreach $key (sort keys(%hash)){
        $text.=$key."\r\n";
    }
    $clip->Set(encode("cp932",$text)); # テキスト設定
    exit;
    #----------------------------------------
    
使い方は、
  1. ユニークソートしたい単語配列をコピー。例)excelの縦列を選択しCtrl+C
  2. clipboard_sort_uniq.plのショートカットをダブルクリック
  3. メモ帳やエクセルに貼り付けCtrl+v
クリップボードをIO媒体として使うので、後始末もなく手軽で便利。

0 件のコメント :

コメントを投稿