Perlラッパースクリプトに渡された引用符を保持します。

Perlラッパースクリプトに渡された引用符を保持します。

私は環境変数などを設定し、同じ名前のコマンドを呼び出すために小さなPerlラッパーを書いています。

./foo.pl -a one -b two -c "1 2 3" -d done

@ARGVを出力すると、1 2 3 付近の""が削除されました。この引用を維持するためにPerlを取得する方法を知っている人はいますか?

答え1

Perlが引用符を保存しないというわけではなく、Perlは引用符を決して取得できないということです。引用符は、シェルがテキストを複数の引数に分割するのを防ぐ方法です。バックスラッシュを使用して同じ効果を得ることができます。

./foo.pl -a one -b two -c 1\ 2\ 3 -d done

どちらの場合も、エフェクトは文字列1、スペース、2、スペース、3です。スペースを含まない他のパラメータの周りに引用符を付けることもできます。引用符はまだプログラムに渡されるパラメータの一部ではありません。

シェルに引数を渡すには、すべての引数を引用符で囲みます。または、各特殊シェル文字の前にバックスラッシュを追加することもできます。

答え2

単に二重引用符を追加してください。

./foo.pl -a one -b two -c '"1 2 3"' -d done

関連情報