2011-01-20 193 views
0

我需要一些perl幫助,試圖用變量打印這個帶雙引號的語句,以及一些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"`; 

特別是這一部分是給我一個問題:| 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"; 
2

使用qq{string},而不是"string"創建一個字符串插值不需要雙引號字符轉義。它使事情變得更容易管理。

+0

我試了一下。 `qq {string} \ n`,沒有運氣。它不喜歡那個sed語句中的'$` – jdamae 2011-01-20 06:52:35

+0

`$`的意思是「標量的開始」,你仍然必須用斜線將它轉義。 – Quentin 2011-01-20 06:53:22