2017-02-12 90 views
1

对于输入abc,代码

perl -ne 'print "XYZ$_"' 

XYZabc打印,但切换的$_XYZ的顺序后,即

perl -ne 'print "$_XYZ"' 

它打印什么。为什么?

+2

'使用STRIC t;'会给你一个有用的错误信息,而不仅仅是“什么也不给” – Dre

+1

大概你没有一个名为'$ _XYZ'的变量:-) –

回答

6

XYZ可以是变量名的一部分,所以$_XYZ是变量名,而不是$_后跟一个字面XYZ

可以分割字符串起来:

perl -ne 'print $_ . "XYZ"' 
+2

或'$ {_} XYZ',它可能或可能不清晰 –

+2

或'print $ _,“XYZ”'或'printf“%sXYZ”,$ _'等 – choroba

+0

我想实现的是在文本文件的每一行添加一些字符。 代码'perl -ne'打印“XYZ $ _”'$ newfilename.txt> $ newfilename-XYZ.txt''完全可以在开始时添加,但上面添加的解决方案不起作用 –

4

Perl的标识符可以包含任何字母,数字或下划线,所以你问perl输出变量$_XYZ的价值,不存在

您可以围绕用大括号{ ... }它从周围的任何字符分隔变量的名称,像这样

perl -ne 'print "${_}XYZ"'