Perl中的字符串引用 - 即使是包含引号、引号或括号的字符串
广义上讲,Perl有两种类型的字符串:在运行时进行插值的引用字符串和不在运行时进行插值的字面引用字符串。让我们逐一回顾这些。
插值字符串
这些字符串通过使用引号(“)来声明。如果封装的引号包含变量或转义序列,这些将在运行时进行处理。
my $integer = 10;
#Declare an interpolated string
my $sentence = "I will count to $integer.\nThen I am coming for you!";
print $sentence;
这将打印
I will count to 10.
Then I am coming for you!
注意$integer变量是如何被插值以打印其值的,以及如何应用换行符转义序列(\n)。
字面字符串(不插值)
字面字符串需要用引号(‘)来封装。这些字符串的内容将作为引号保留,并在运行时不进行插值。使用字面字符串也更为高效,因为Perl解析器不需要检查字符串中的变量和转义序列以进行插值。
my $integer = 10;
#Declare a literal string
my $sentence = 'I will count to $integer.\nThen I am coming for you!';
print $sentence;
这将打印
I will count to $integer.\nThen I am coming for you!
包含引号/引号的字符串
为了引用包含引号或引号的字符串,Perl提供了两个引用运算符:用于字面引用的 q 和用于插值引用的 qq。引用运算符允许程序员定义字符串的封装字符 - 只需选择不包含在您的字符串中的字符
my $user = "sillymoose";
my $difficult_string_interpolated = qq{Welcome $user\n. Whilst you are are here, you can "do as they do in Rome" and enjoy yourself};
print $difficult_string_interpolated;
这将打印
Welcome sillymoose
Whilst you are are here, you can "do as they do in Rome" and enjoy yourself
尽管上面的例子使用了大括号({,})来封装字符串,但Perl将接受大多数符号字符,如键盘顶部的字符(!@£$%^&*-+)。与普遍看法相反,Perl 不接受任何字符 作为分隔符 - 例如,字母表中的字母(a-z)不起作用。
本文最初发布在 PerlTricks.com。
标签
反馈
这篇文章有什么问题吗?请通过在 GitHub 上打开问题或拉取请求来帮助我们。