1行ずつ処理する-知らなかったこと
テキストデータを1行ずつ処理する場合。
# Perl while (<>) { print if /end/i; }
これを使うとき、こうやって実行していた。
$ cat file.txt | perl grep.pl
しかし、これで動くことを今日知った。
$ perl grep.pl file.txt
それと言うのも、Rubyでは
# ruby !キレイ! while line = gets puts line if /end/i.match(line) end
のgets
は、ARGF.gets
の省略形で、第1引数がファイルならそれを1行ずつ処理するというのを見て、いままでPerlではできないと思い込んでいたが、ふと思い立って上のPerlの引数に指定できることを知った。
ちなみに、line = gets
を(line = gets) != nil
と書いていた。過去ログのにそのまま残ってる。