勉強中(2)

昨日書いた(今読んでる)リャマ本の前に、

すぐわかるPerl (Software Technology)

すぐわかるPerl (Software Technology)

を買って、この本からPerlを始めました。本を買うにあたっては、 id:naoya さんが2年前に書かれたエントリー「お薦めの Perl 本をいくつか紹介」がすごく参考になりました。(というか、このエントリーを読んで、興味を持って、本を買って、Perlを始めたようなものです。)
「すぐわかるPerl」は、評判通りわかりやすくて楽しい本でした。なんだか物語を読み進めるような感じでページをめくることが出来ました。 Windows 環境ではなく、 Linux 環境(僕の場合は Turbolinux )で本に載っているプログラムを打ち込みながら勉強していったのもよかったと思います。(ただ、サンプルプログラムで度々、SpeedとかShimabukuroとかArakakiとか出てくるところだけはさすがに時代を感じさせられた。)
この本を読み終えて、これくらいのプログラムは作れるようになりました。
(もちろん人によってはもっとすごいプログラムも作れるでしょう。)

#!/usr/local/bin/perl -w
# hone -- 2つの時刻の間隔(分)を求める
(@ARGV == 2) or die "usage: $0 stime etime\nex: perl $0 8:30 11:30\n";
@tm = @ARGV;
print " $tm[0] - $tm[1] === ";
foreach (@tm) {
/([0-9]+):([0-9]+)/;
$m = $1 * 60 + $2;
@mm = (@mm, $m);
}
$mm[1] -= $mm[0];
print $mm[1]." min. ( ";
print $mm[1] / 60;
print " )\n";

シェルの画面で、2つの時刻を引数にして実行すると、

$ perl hone 22:26 23:11
22:26 - 23:11 === 45 min. ( 0.75 )

のような結果が得られます。
実際このプログラムは、自分の勉強時間をはてなグラフにつける際、勉強開始時間と終了時間からグラフへの登録値(0.75とか)を求めるのに使っています。
ところで、ふと振り返って(またもや) naoya さんの以前のエントリー「Perlプログラマのレベル10 - Perlプログラミング救命病棟より」を見てみたら、いつの間にかPerlプログラマ:レベル3になっていました。やった! (JavaScriptとはだいぶ違う言語だと思うし、いちおう use strict に出会ったことはあるのでレベル2は越えたと思う。 use strict の意味はまださっぱり分からないけど。)
目標はレベル8で、CPANにモジュール送って使ってもらえるようなPerlプログラマになりたいです。でも、ドラクエでいうと、Perlレベル3 は DQレベル10 くらいで、Perlレベル8 は DQレベル97 くらいじゃないかという気がする。道のりは遠く遠い。。
ところで、 Ruby の言語の特徴を教えてもらっている(というか勝手に日記を見て参考にさせてもらっている) id:kakkunpakkun さんに、上の時刻の間隔を求めるプログラムを Ruby で書くとどうなるのか、ちょっと書いてみてもらいたいなーなんて、このばとトラバをかりてお願いしてみます。(もちろんご都合のよい時に。)