2011-01-20 194 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