#acl SomeUser:read,write All: = Lightweight Language Lovers = == 火事場のCPAN 〜 偉大なるLLの"おかん"Perl 〜 == . 最近、1つのPDFファイルを切り分けて複数のファイルに分割する必要に迫られました。 . Windows用のフリーソフトがいくつかあるようですが、自動化を考えるとLLで処理したいものです。 . ただ、今回は急で時間がほとんどありません。こんな時、火事場の○○力になってくれるのがPerlのCPANです。[[BR]] PDF::API2というモジュールを使うと、本当に簡単に実現できてしまいました。 . CPANについてはあちこちで説明されていると思いますので、ここではポイントだけ書いておきます。[[BR]] まず、CPANを使うための準備ですが、 {{{ # perl -MCPAN -e shell }}} として、基本的にはデフォルトですすめていくのですが、proxy の設定でちょっとつまずいてしまいました。あわてていたので、そのページに出ていたとおり、 {{{ Your ftp_proxy? [http://proxy:8000/] }}} と"[ ]"(ブラケット)まで入れて答えてしまいました。(愚か・・・) 今、冷静に考えるとこれはデフォルト値が表示されている例だったのですね・・・ 普通にURLだけ入れれば良かったのです。アドレスだけ入れたり、IPアドレスで入れてみたりしてもつながらなかった訳です。 . 小一時間ほど損をしてしまいましたが、設定さえ出来ればモジュールのインストールそのものは {{{ > install PDF::API2 }}} で一発です。他に必要となるモジュールも自動的にインストールしてくれました。 . {{{PDF-API2-0.59.002.tar.gz}}}の中には、サンプルと思われるプログラムがいくつか入っています。この中の{{{pdf-merge.pl}}}が雛型として使えそうです。 ~- CPANシェルから install コマンドでインストールした場合、どこに入ったのかがわかりませんでしたが、[[BR]] 今探してみると、{{{.cpan/build/PDF-API2-0.59.002/contrib}}}にありました。-~ . これは複数のPDFファイルをマージして1つのPDFファイルにするプログラムです。今、実現したい事は逆の事ですが、中のコードを見ると、1ページずつ取り込んでいました。ということは、ここでページを限定できれは欲しいページだけ取り込めそうです。 . 具体的なコードは ["/PDF-merge"] を見ていただくとして、サンプルプログラムのほんの数行を直すだけで実現出来てしまいました。やっぱりPerlはストリートファイトでは最強なのかも知れません。最初、この記事のサブタイトルを、Perlの成功が数々のLLの発展の基礎になったという意味で、「LLの母」と考えていたのですが、「おかん」のほうがぴったりなのに気づきました。 ---- CategoryPerl