在Perl中,引用双引号("),单引号(')和严重重音符号(`)之间的区别是什么?
此代码:
#!/bin/env perl
use v5.10;
say "Hello";
say 'Hi';
say `Hola`;
给出以下结果:
Hello Hi
答案 0 :(得分:4)
''
构造不带interpolation的字符串。还有一个q()
运算符也是如此。
my $foo = 'bar';
print '$foo'; # prints the word $foo
print q($foo); # is equivalent
当您只有文本并且文本中没有变量时,您将使用单引号。
""
使用变量插值构造字符串。还有一个qq()
运算符也是如此。
my $foo = 'bar';
print "$foo"; # prints the word bar
print qq($foo); # is equivalent
如果要将变量放入字符串,请使用这些。一个典型的例子是在一个老式的CGI程序中,你可以看到:
print "<td>$row[0]</td>";
如果您的文字包含双引号,则qq()
变体会派上用场。
print qq{<a href="$url">$link_text</a>}; # I prefer qq{} to qq()
这比逃避所有引号更容易阅读。
print "<a href=\"$url\">$link_text</a>"; # this is hard to read
``
Shell并执行命令。返回其他程序的返回值。还有一个qx()
运算符也是如此。这会插入变量。
print `ls`; # prints a directory listing of the working directory
my $res = qx(./foo --bar);
如果你想编写一个比shell脚本更强大的脚本,你需要调用外部程序并捕获它们的输出。
所有插值的只能插入变量,而不是命令。
my $foo = 1;
my $bar = 2;
print "$foo + $bar";
这将打印 1 + 2 。它实际上不会计算和打印 3 。
所有这些(以及更多)都在perlop under Quote and Quotelike operators中解释。