perl

もう、プログラムなんてスクラッチから書く気がしませんよ

in

「まるごとPerl!」という本をパラパラめくっていたらGD::Barcodeなるモジュールを発見。仕事でバーコードを出力したいというニーズがけっこうあって、VC++で自作したモジュールを使ったりエクセルExcelやらAccessでmsbcode9.ocxを使っていたのですがPerlでお手軽にバーコードが作成できるならこれも1つのテとしてストックしておくに限ると思い早々にトライ。

心配は、GDの名前が示すとおりlibgd関連のライブラリが揃っていないと動かないのではないかという懸念。一応、仕事でもOSX/RedHat環境があるので最終的にはこちらで作成してもいいのですが、やっぱり手元のWin/ActivePerl-5.10環境で動かしたいというのが本音。

ppmはさすがにCPANほどモジュールが揃っていないのでそこが気に掛かるところ。おそるおそる

ppm install GD::Barcode

としてみると一応成功。依存関係も解決してくれたことを期待しつつテストコード

use strict;
use GD::Barcode;

binmode (STDOUT);
print GD::Barcode->new('EAN13','1234567890123')->plot()->png();

(たったこれだけ!いままでの苦労はなんだったんだ!)を実行してみるも、案の定GD::Fontがないよみたいなメッセージ。

あきらめてGD系のパッケージをインストールしようとおもったのだけれど検索してみるとどうもそれらしいのがないみたい。OSXかRedHatでやるかと半ばあきらめつつ一応ググってみたらありました。ppdってサードパーティからも色々あるんですねぇ。

ppm install http://cpan.uwinnipeg.ca/PPMPackages/10xx/GD.ppd

前にも書いたけれどperlコミュニティの広がりはちょっと驚き。なにかしようと思うと大抵のものはもう用意されているような気がしますよ。これまでExcel出力とかVC++で面倒なことやっていたのもSpreadsheet::WriteExcelでチョロっとできちゃうし。他にも便利そうなライブラリがてんこ盛り。もう、プログラムなんてスクラッチから書く気がしませんよ。

perlリファレンスのおどろおどろしい世界

in

仕事でちょっとしたアドレス帳的なデータを扱う必要があって、勉強中のperlでユーザIDをキーにメールアドレスと名前の配列を値としたハッシュを作ろうと思ったのですがいきなり躓きました。単に、CSVからデータを読み込んで突っ込むだけなので大したことない処理だとタカを括ったのですが...最初に書いたのが以下のコード。

未だ遠い、perl使いへの道

in

perl勉強中です。昨日仕事でちょこっとした集計をする必要があってperlで書こう思いがんばったのですがわからず時間切れ。結局、awkで書いて間に合わせましたが、う〜ん。まだまだ遠い、perl使いへの道。

awk -v x=$1 -F: 'BEGIN{sum=0;}{a= substr($2,1,8);gsub(/¥//,"",a);\
  if(a+0>080701&&a+0<080731){b=substr($2,30,5);sum+=(b+0);}}END{print x "," sum;}' \
  /path/to/data/data.txt

書いたperlは、

exiftoolはとっても楽ちん

デジカメの日付設定を丸々一年間違えてました。写真はiPhotoで管理していたのですが、いつも「最後の読み込み」で確認していたのでしばらく日付が間違っているのに気がつきませんでした。とりあえず、一括して日付を変更する方法を模索。perlでEXIFを扱うライブラリを探したところexiftoolを発見。やっぱありましたよ。

perlの勉強始めました

in

延びに延びた移行もとうとう完了。まだまだ動作していないものもあるけれど一応のところ大過なく作業完了。後は、細かいツール類を楽しみながら移行していくだけ。まあ、内心「このアプローチは間違っているなぁ」などと思いながらも時間に追われるあまりただ機械的に移植をしていくこれまで作業よりは十分に楽しい。

コンテンツの配信