2011-01-20 9 views
0

この二重引用符で囲まれた文を変数で印刷しようとすると、いくつかのunix sedコマンドが混じっています。perlで変数を含む二重引用符を出力するには

私はそれを実行することに興味はありませんが、これをファイルに出力したいだけです。ご協力いただきありがとうございます。特に

print MYOUTFILE "mysql -u foo -pbar --database $dbsrc -h $node --port 3306 -ss -e \"SELECT 'a','b','c' UNION SELECT col1, col2, col3 FROM $tblist limit 10\" | sed 's/\t/","/g;s/^/"/;s/$/"/;s/\n//g' > myDump.csv\"\n"`; 

この部分は私に問題を与えている。代わりに"string"| sed 's/\t/","/g;s/^/"/;s/$/"/;s/\n//g' > myDump.csv\"\n";

答えて

4

必要なときにqqqを使用し、エスケープ合併症を減らすために:

print MYOUTFILE qq{mysql -u foo -pbar --database $dbsrc -h $node --port 3306 -ss -e "SELECT 'a','b','c' UNION SELECT col1, col2, col3 FROM $tblist limit 10"}, q{ | sed 's/\t/","/g;s/^/"/;s/$/"/;s/\n//g' > myDump.csv}, "\n"; 
+0

どうすれば新しい行に壊れてしまいますか?ありがとう。 – jdamae

+0

jdamae:改行を含むように私の答えを編集しました –

+0

@Alain - 助けてくれてありがとう – jdamae

2

使用qq{string}をエスケープするために、二重引用符を必要としない補間された文字列を作成します。これにより、管理が容易になります。

+0

私はそれを試してみました。 'qq {string} \ n'、運がない。それはsedステートメントの '$'が好きではありません – jdamae

+0

'$'は "スカラーの開始"を意味しますが、それでもスラッシュでエスケープする必要があります。 – Quentin

+0

もエスケープしました。まだ運がない。私は '\ t'と' \ s'でもエスケープしようとしました。 – jdamae

関連する問題