Perlの配列は@fooとか表すのだが、$n番目の内容は$foo[$n]と表す。連想配列もあって、%barと表すのだが、キーが$hogeの内容は$bar{$hoge}となるわけだな。ところで連想配列って、いろいろ訳があって、ハッシュテーブルとかいろいろだな。ここではもっぱら連想配列と言うが。次のwhileなのだが、どうも慣れない。イメージ的にはこんな感じ。この<IF>というやつはファイルポインタを囲んでるだけなのだが、$foo=<IF>;とすると1行読み込み、@foo=<IF>とすると配列にファイルを読み込み、if(<IF>)とするとEOFに到達してないかという非常にマルチなやつで、whileでは1行読み込みと同時にEOFにならないか確認している。while($foo=<IF>)のようにかくと$fooに読み込まれるのだが、これも省略すると、$_に読み込まれる。なでしこに「それ」というのがあるが、これはきっと$_を模したものだろう。=~という演算子は、置換やらそういうことをするための演算子で、置換はs/(正規表現)/(置換後)/の要領で書く。この置き換えはおもしろくなくて、行の最後の1つ以上の連続した空白、最初の1つ以上の連続した空白をそれぞれ無に置換するというもの。s/^\s+//;とあれば、単にs/^\s+//;とかくだけでいい。"$_\n";のように、ファイルポインタと書きたいものを空白でつなぐだけ。ファイルポインタがSTDOUTなら省略できる、書きたいことが$_ならば、省略できる。"hoge";と書けば、書き出し先はSTDOUT。"\n";}close(FP);さっき言ったとおり、@foo=<IF>とすると配列に読み込めると。ここで$len=@fooと代入して、それを表示させたが2と出る。これを使ってforでループを作って配列を回すのもありなのだが、今回はforeachを使った。foreach(@foo)とすると、@fooの中身を1つづつ$_に出して、処理できる。$bar(@foo)と書く。foreachは建前上順序は不定だが、まぁこの際いいことにしよう。だいたい順序通りだし。行の最後の空白を取り除いて、sprit(/,/,$_)を考える。$_はあえて省略した。これは配列だから、@barに代入してもいいんだが、これをそのままforeachで回してもらう。こんな風に変数が展開されるのはPerlのいいところです。ダブルクオーテーションで囲めばこんな風に取り扱われる。$fooの後にooという文字をつけるとき、"$foooo"とすると問題があるのは自明だから、"${foo}oo"と書ける。}で囲まないといけない。その一方、配列を自動作成するすばらしいものがあって(0..$len-1)と書くと、0,1,...,$len-1という配列をつくってくれると。増分が1のforループはforeachで連続した配列を回してやればできると。"$_\n";}もちろんforループはCなどで見慣れたあの形式だから、普通に使える。あと、比較演算子なんだが、文字とそれ以外で異なる。}}文字の比較演算子はアルファベットというわけです。