コマンド実行後の標準出力を改行そのままに喰わせたい

何が困ったというとbashの下の箇所

any trailing newlines deleted.

英語良く分からないけど改行削除しちゃうぜ!って事でしょう。多分。
で、どういう時かっていうとバッククォートで実行した時。$()も一緒ね。

仰るとおりという↓のテキストを

$ cat text.txt
a a a
b
c

バッククォートで読ませると改行が消されてる。

$ echo `cat text.txt`
a a a b c

で、ちょっとやりたい事があったんですけど改行消されてスペースになっちゃってると非常に困った訳です。
コマンドの実行結果をそのまま(改行有りで)喰わせたかった訳なんです。

まず、下のコード(args.pl)を結果を食わせりゃ普通に出来るだろと思ってたら・・・・。
args.pl

use YAML;
warn YAML::Dump(\@ARGV);

実行したら下のような感じになりました。1行単位で処理したいんだけど改行消されてスペースになって引数五個になってもうどこが改行だか分からなくてワァーワァー。
行という概念を超越した結果になってしまいました。

$ perl args.pl `cat text.txt`
---
- a
- a
- a
- b
- c

で本題、結構悩んでしまった結果・・・回答はダブルクォートを付ければおkでしたという。

$ perl args.pl "`cat text.txt`"
---
- "a a a\nb\nc"

後は改行でsplitするなるなんなりで1行単位で自由にできます。


結論としては・・・・
答えは全てmanの中にある・・・という事。

お粗末でした。