Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 如何用双引号将字符串括起来_Perl_Double Quotes_Quoting - Fatal编程技术网

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