как распечатать оператор с двойными кавычками с переменными в Perl - PullRequest
0 голосов
/ 20 января 2011

Мне нужна помощь perl, пытающаяся напечатать этот оператор в двойных кавычках с переменными, смешанный с некоторыми командами unix sed, от которых я, похоже, не могу правильно выйти.

Я не заинтересован в его выполнении, а просто хочу распечатать это в файл.Спасибо за вашу помощь.

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";

Ответы [ 2 ]

4 голосов
/ 20 января 2011

Чтобы уменьшить побочных осложнений , используйте q и qq при необходимости:

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 голосов
/ 20 января 2011

Используйте qq{string} вместо "string" для создания интерполированной строки, которая не требует экранирования символов в двойных кавычках.Это делает вещи намного проще в управлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...