Perl 如何用双引号将字符串括起来
我有一个包含以下内容的文件Perl 如何用双引号将字符串括起来,perl,double-quotes,quoting,Perl,Double Quotes,Quoting,我有一个包含以下内容的文件 firsttext=cat secondtext=dog thirdtext=mouse 我希望它返回这个字符串: “firsttext=cat”“secondtext=dog”“thirdtext=mouse” 我试过这一行,但它给了我一个错误 cat oneline | perl-ne'print\“$\”' 在-e第1行的EOF之前的任何位置都找不到字符串终止符“” 我不明白这个错误,为什么不能加上引号呢 另外,如果我在这个字符串中有一个变量,我希望它
firsttext=cat secondtext=dog thirdtext=mouse
我希望它返回这个字符串:
“firsttext=cat”“secondtext=dog”“thirdtext=mouse”
我试过这一行,但它给了我一个错误
cat oneline | perl-ne'print\“$\”'
在-e第1行的EOF之前的任何位置都找不到字符串终止符“”
我不明白这个错误,为什么不能加上引号呢
另外,如果我在这个字符串中有一个变量,我希望它像这样插值:
firsttext=${animal}secondtext=${othervar}thirdtext=鼠标
哪个应该输出
“firsttext=cat”“secondtext=dog”“thirdtext=mouse”
您想要的是:
cat oneline | perl -ne 'print join " ", map { qq["$_"] } split'
-ne
选项只在行上拆分,如果没有设置其他选项,它不会在任意空格上拆分。变量的值定义在哪里?您的问题也是一个完全不同的主题,您需要编写一个新问题。如果您想继续,您必须考虑可以在哪里定义$animal
和$othervar
ck到一行。为什么所有这些都必须在Perl的一行中?@reinierpost,如果需要的话,它会在末尾添加一个新行。并从输入中删除它。没有它,行尾的一个字就会出错。@reinierpost它唯一的效果是在输出的末尾添加一个新行。最后一个条目不受影响。我测试通过在文件末尾添加一个空行进行编辑,它只会执行,而不会转到第三个条目。很抱歉,你是对的。但我认为OP不希望所有输出都在一行。@reinierpost的-l
标志很有帮助。不过,也只是尽可能地匹配问题中的内容。
perl -lne '@f = map qq/"$_"/, split; print "@f";' oneline