18

Perl は、次の非常に優れた機能を提供します。

while ( <> )
{
    # do something
}

...これにより、スクリプトとscript.pl <filename>同様に使用できますcat <filename> | script.pl

さて、スクリプトが以前の方法で呼び出されたかどうかを判断する方法はありますか? もしそうなら、ファイル名は何でしたか?

私はこれを一度知っていたことを知っており、その構造を使用したことさえ知っていますが、どこで/どのように思い出せません. そして、これを 'net で検索するのは非常に難しいことがわかりました (「perl stdin filename」? いいえ...)。

助けてください?

4

3 に答える 3

26

変数$ARGVは、現在処理中のファイルを保持します。

$ echo hello1 > file1
$ echo hello2 > file2
$ echo hello3 > file3
$ perl -e 'while(<>){s/^/$ARGV:/; print;}' file*
file1:hello1
file2:hello2
file3:hello3
于 2012-06-21T16:15:53.223 に答える