このブログを検索

2010/11/05

print reverse<>;

引数に指定したファイルの内容をすべて表示するperlスクリプトを書け、と言われたら、私なら以下のように書く。

open IN,"<".$ARGV[0];

while(){
    print;
}


そしてperlって簡単だなァ・・・とニタニタする。しかし、実は以下のように書けばいいのである。

while(<>){
    print;
}


そしてもっと恐ろしいことには、

print <>;


でよい。そして、このときの引数は複数あってもよい。指定されただけのファイルについて、内容を表示する。そして、以下のようにすると、ファイル内容を逆順に、つまり最後の行から順に先頭の行まで表示する・・・

print reverse<>;


・・・・・。これは、実は一番最後のスクリプトを見たのである。そして、これでこうならもしかして、と、今書いたのと逆にさかのぼっていったのである。

これは、「初めてのPerl」からのネタです。「初P」では「ダイヤモンド演算子」ということでその使い方が説明してあるのでそれを読んでいればわかることですが、私はここを飛ばしていたのです。そして5章のハッシュのところを読み、最後の問題の答えを見ていたら、6章の答えである

print reverse<>;


が目に入ったわけです。今日は仕事がちょっとヒマだったので「初P」を読んでいたのですが、何度か吹き出しました。こういう冗談って、なかなか書けないですよね。絵文字も、(笑)ともかかずに、マジメな顔してあきらかに冗談であることがわかる文章を書くのって、難しいものです。