Perl ワンライナーでシェル変数を渡すには -s オプションを使えばよい。
書式
perl -se '...' -- -Perlで使う変数名=シェル変数名
実行例
$ FOO=bar; perl -sle 'print $var' -- -var=$FOO bar
参考
- sオプションを使います
echo -e "hogehoge\nfugafuga" > myfile.txt var="hogehoge\n";cat myfile.txt | perl -pse 's/$shell_var//' -- -shell_var=$var[小ネタ]perlワンライナーにシェル変数を渡す - Qiita
-s
コマンドライン上のプログラム名の後から、ファイル名引数 (または引数 --) の前までのスイッチのための、原始的な解析を 行なえるようにします。 ここで見つかったスイッチは、@ARGV から取り除かれ、対応する Perl プログラムの 変数に設定されます。 以下のプログラムは、-xyz というスイッチを付けて実行された時にだけ、 "1" と表示し、-xyz=abc と起動された時に "abc" と表示します。#!/usr/bin/perl -s
perlrun - Perl インタプリタの起動方法 - perldoc.jp
if ($xyz) { print "$xyz\n" }
--help のようなスイッチは変数 ${-help} を作成するので、 use strict "refs" を満たさないことに注意してください。 また、警告を有効にしたスクリプトでこのオプションを使うと、大量の "used only once" という偽警告がでることになります。