燈明ブログ

現状は小池啓仁の応援ブログ

Perlでの nオプションとダイアモンド演算子

たとえば、コマンドプロンプトから以下のコマンドを入力するとソース(x.txt)を読み込んで、行数を付加して、一行毎に全行を表示します。
eオプションはワンライナーの実行指定で、nオプションは、『while(<>)』ループ内でのワンライナー実行です。
ちなみに、『$.』には行数が入っている。

perl -ne "print $.,':', $_" x.txt

参考:

  • n オプションは、与えたプログラムの外側に下のようなループがあるのと同じような動作をします(実際に等価な処理は少し違います)。
       while(<>) {
          ....
       }

「<>」は、ダイアモンド演算子と呼ばれ、「標準入力から入力が与えられた場合はそちらを読み込み、ファイル名が引数として与えられた場合はファイルから読み込む」というとても便利な演算子です。

http://www.stackasterisk.jp/tech/program/perl04_04.jsp

ダイアモンド演算子「<>」は、標準入力と引数の両方が対応されているのですね。