在 Perl 中连接变量有不同的方法吗?
我不小心写了以下代码行:
print "$linenumber is: \n" . $linenumber;
这导致输出如下:
22 is:
22
我期待:
$linenumber is:
22
所以我想知道。它必须将$linenumber
双引号中的 解释为对变量的引用(太酷了!)。
使用这种方法有什么注意事项,它是如何工作的?
在 Perl 中连接变量有不同的方法吗?
我不小心写了以下代码行:
print "$linenumber is: \n" . $linenumber;
这导致输出如下:
22 is:
22
我期待:
$linenumber is:
22
所以我想知道。它必须将$linenumber
双引号中的 解释为对变量的引用(太酷了!)。
使用这种方法有什么注意事项,它是如何工作的?
使用双引号时会发生变量插值。因此,特殊字符需要转义。在这种情况下,您需要转义$
:
print "\$linenumber is: \n" . $linenumber;
它可以重写为:
print "\$linenumber is: \n$linenumber";
为避免字符串插值,请使用单引号:
print '$linenumber is: ' . "\n$linenumber"; # No need to escape `$`
我喜欢 .=
运算符方法:
#!/usr/bin/perl
use strict;
use warnings;
my $text .= "... contents ..."; # Append contents to the end of variable $text.
$text .= $text; # Append variable $text contents to variable $text contents.
print $text; # Prints "... contents ...... contents ..."
在 Perl 中,任何用双引号构建的字符串都将被插入,因此任何变量都将被其值替换。像许多其他语言一样,如果您需要打印 a $
,您将不得不对其进行转义。
print "\$linenumber is:\n$linenumber";
或者
print "\$linenumber is:\n" . $linenumber;
或者
printf "\$linenumber is:\n%s", $linenumber;
如果您将代码从
print "$linenumber is: \n" . $linenumber;
到
print '$linenumber is:' . "\n" . $linenumber;
或者
print '$linenumber is:' . "\n$linenumber";
它会打印
$linenumber is:
22
当想要打印变量名时,我发现有用的是使用单引号,这样其中的变量就不会被翻译成它们的值,从而使代码更容易阅读。
在制定此响应时,我发现此网页解释了以下信息:
###################################################
#Note that when you have double quoted strings, you don't always need to concatenate. Observe this sample:
#!/usr/bin/perl
$a='Big ';
$b='Macs';
print 'I like to eat ' . $a . $b;
#This prints out:
# I like to eat Big Macs
###################################################
#If we had used double quotes, we could have accomplished the same thing like this:
#!/usr/bin/perl
$a='Big ';
$b='Macs';
print "I like to eat $a $b";
#Printing this:
# I like to eat Big Macs
#without having to use the concatenating operator (.).
###################################################
#Remember that single quotes do not interpret, so had you tried that method with single quotes, like this:
#!/usr/bin/perl
$a='Big ';
$b='Macs';
print 'I like to eat $a $b';
#Your result would have been:
# I like to eat $a $b
#Which don't taste anywhere near as good.
我认为这会对社区有所帮助,所以我提出这个问题并回答我自己的问题。其他有用的答案非常受欢迎!
您可以使用反斜杠$
来逐字打印:
print "\$linenumber is: \n" . $linenumber;
这打印出你所期望的。如果您不希望 Perl 插入变量名,您也可以使用单引号,但随后"\n"
将按字面意思插入。