■splitで、最後の空の要素がカットされてしまう たとえば、、"a:b:c:d:"っといった場合に、('a','b','c','d','')と言った 値を期待して、 split(/:/, "a:b:c:d:"); とすると、期待通りのリスト値は得られず、('a','b','c','d')のように 最後の空要素がカットされてしまいます。 この現象を防ぐには、第三引数に大きな数字を指定すればうまくいきます。 split(/:/, "a:b:c:d:", 9999); ■GIFの幅と高さを得る。 ($width, $height) = &getsize(ファイル名); のように使います。 sub getsize{ local($gif) = @_; open(FILE, $gif) || return (0,0); read(FILE, $header, 18, 0); ($sign, $wid, $hei) = unpack("A6vv", $header); ($wid, $hei); } ■HTMLタグと文章をばらす $html = <>; foreach (split(//); $tag = "<" . shift(@tmp) . ">"; $nakami = join(">", @tmp); # 何らかの処理 } ただし、>> のようなHTMLに対してはこの方法は無効です。 ■MacやDosのファイルを読む cat mac.txt | perl -p -e 's/\r/\n/g' | less cat dos.txt | perl -p -e 's/\r\n/\n/g' | less cat dosORmac.txt | perl -p -e 's/\r\n/\n/g;s/\r/\n/g' | less ○おまけ さらに、lessが日本語版じゃなかった場合に日本語を読む方法。 nkf -j dosORmac.txt | perl -p -e 's/\r\n/\n/g;s/\r/\n/g' | less -r # 端末がJISを表示できる必要があります。 ■曜日を計算する sub date2week{ local($year, $month, $day) = @_; ('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat') [($year + int($year/4) - int($year/100) + int($year/400) + int((13*$month+8)/5) + $day) % 7]; } いやまて、ちょい違うぞこれ。。 yearは4桁の西暦、$monthは月で1から12までの整数、$dayは日付です。 ○例 $date="1998/12/31"; # 固定長のデータの場合、splitよりunpackの方が速いのだ。 ($year, $month, $day) = unpack("a4xa2xa2", $date); print &date2week($year, $month, $day); ■/aa/ .. /bb/の使い方 たとえば、 foreach $file (@ARGV){ open(FILE,$file); while(){ last if(/aa/ .. /bb/); print; } close(FILE); } などとしては「いけません」。このままだと、lastが呼ばれた時点で「/aa/が一度真になった」という情報が消えないので、2回目のファイルでは、ファイルの先頭からいきなり(/aa/ .. /bb/)が真になります。