日記帳だ! with Tux on Libserver

二度目の大改造!! 日記帳…か?を継承し、より柔軟でパワフルなBlogに変身しました。

RSSに対応しています。リンク・コメント・トラックバックは自由にしていただいてほぼ問題ありません。
RSS購読方法、僕のリンク・コメント・トラックバックについての考えを読むことをおすすめします。

Perlを使えば仕事をさぼれる

Perlは何かと便利なものだ。
こういうスクリプトを組むと、非常に厄介な仕事がすぐ終わる。
作成時間やら考えると手作業で調べた方が速くないかと言うかもしれないけど、かったるい。
open(LS1,"ls /cygdrive/c/dir1 |");
open(LS2,"ls /cygdrive/c/dir2 |");
@ls2=<LS2>;
while($v=<LS1>){
($v1,)=split(/\./,$v);
$f=1;
foreach(@ls2){
($v2,)=split(/\./,$_);
if($v1 eq $v2){$f=0; break;}
}
if($f!=0){print "$v";}
}
どういうことかというと、ファイル変換をしてるんだけど、変換漏れを確かめるために作成した。
Cygwin上で動かす都合lsを使ってるが、ActivePerlなどでWindowsで直接動作させる人はdir /bでいいかと。
慣れてる人ならスムーズに作成できるんだろうが、splitの引数の順序を間違えたりでなかなか。
しかし、こういう仕事をさせるにはもってこいなのは今日確認できたと思う。
けど、配列を変数に展開して受け取る方法、なかなかユニークですね。
($a,$b,$c)=split(/\,/,"山田,田中,中村");
(1,2,3)というの書き方は配列の作成方法そのものですからね。
作成も、展開も同じ方法なところがね。
PHPもPerlからかなり影響を受けてるようで、list関数というので受け取れるけど、これもユニーク。
それを使って上では、拡張子を除いたファイル名を取得してるわけだ。
いや、かなり簡易な方法だけどね。まぁこれでもOKです。
あと、連想配列のループの取り扱いもユニークだと思った。
while( ($k,$v) = each(%foo) ){print "$k : $v\n"; }
1つ1つeachで取り出すと、キーと値の配列で受け取れると。
それをこうやってやると。無理になったらfalseに相当する値を送ると。
実は、連想配列はforeach回してもうまく回らんのよね。
で調べるとこうするといいと。なるほど。
配列を変数に展開できるからこそ使える技だな。まぁそうじゃなくても使えないことはないけど。
そんなPerlで困ったことは、複数行コメントアウトができないこと。
しかし、どうもこんな方法があるらしい。
=pod 
foreach (@ls2){
print ;
}
=cut
なぜこれでいいのかはよくわからない。けどできないことはないらしい。
ちなみにPerlのコメントアウトは普通#を使う。そうなんだよね。
と、いろいろやってましたが、Perlは非常に手間が省けていい。
テスト勉強で、繰り返し計算ばっかりでめんどくさかったから、正しいか確かめるためにPerlを使ったというのが今日あってね。
それでちょっと取り上げてみました。
Author : Hidemaro
Date : 2008/06/08(Sun) 22:27
コンピュータ・インターネット | Comment | trackback (0)

Tools