次のような高速なデータ操作のために、いくつかの Perl ワンライナーを実行する必要があることがよくあります。
some_command | perl -lne 'print if /abc/'
パイプから読み取るため、コマンド引数のファイル名をループする必要はありません。どうすれば次を達成できますか?
some_command | perl -lne 'print if /$ARGV[0]/' abc
これにより、次のエラーが発生します。
Can't open abc: No such file or directory.
「-n」が
while(<>) {.... }
私のプログラムの周りで、 <> は引数をファイル名として受け取りますが、毎回次を行うのは少し非現実的です
#/bin/sh
while read line
do
some_command | perl -lne 'BEGIN{$val=shift @ARGV} print if /$val/' "$line"
done
ファイル名として解釈されることなく、Perl ONE-LINER コマンドライン引数の「内部」に入るより良い方法はありますか?