Perl带引号,内插和转义的字符串使用介绍

Perl中的字符串是标量变量, 并且以($)符号开头, 并且可以包含字母, 数字和特殊字符。该字符串可以包含一个单词, 一组单词或多行段落。字符串由用户在单引号(')或双引号(")中定义。
带引号的字符串
在Perl中, 可以在双引号("")或单引号('')之间放置字符串。但是, 单引号中定义的字符串和双引号中定义的字符串将被区别对待。
双引号字符串:
内插双引号的字符串, 即变量名称(标量, 数组和哈希)被其原始值替换, 转义序列(如/ t,/n等)起作用。
也可以使用qq运算符代替双引号字符串。
单引号字符串:
单引号字符串不被插值。它们按原样解释, 没有任何修改。 Perl中的q运算符提供与单引号字符串相同的用法。
例子:

#!/usr/bin/perl# An array of integers from 1 to 10 @list = (1..10); # Non-interpolated string $strng1 = 'Using Single quotes: @list' ; # Interpolated string $strng2 = "Using Double-quotes: @list" ; print ( "$strng1\n$strng2" );

输出如下:
Using Single quotes: @list Using Double-quotes: 1 2 3 4 5 6 7 8 9 10

字符串插值
使用双引号对字符串进行插值有时会变得棘手, 因为某些字符串包含的符号在插值时可能没有用。例如:写电子邮件地址时使用的" @"符号。如果要将电子邮件地址存储在双引号字符串中, 则会自动插入" at"(@)符号, 并将其视为数组名称的开头并由其替换。如果找到具有该名称的数组, 则它将用该数组的值替换该数组的名称;如果不存在具有该名称的数组, 则将其留为空白。
例子:
#!/usr/bin/perl# Assining a variable with an email address # using double-quotes $email = "lsbin0402@gmail.com" ; # Printing the interpolated string print ( $email );

输出如下:
lsbin0402.com

在上面的示例中, 对字符串($ email)进行了插值, 并用名为'@gmail'的数组替换了@gmail, 但由于未找到具有该名称的数组, 因此删除了@gmail但未替换它, 因此, " lsbin0402.com "被打印出来。
在下面的示例中, @ gmail已预先定义, 因此将代替@gmail。
例子:
#!/usr/bin/perl# Pre-defining the array @gmail = (a..g); # Assining a variable with an email # address using double-quotes $email = "lsbin0402@gmail.com" ; # Printing the interpolated string print ( $email );

输出如下:
lsbin0402a b c d e f g.com

可以通过使用单引号代替双引号来更正此问题。使用单引号将字符串分配给变量将删除插值, 因此" @"将不被视为数组声明。
例子:
#!/usr/bin/perl# Assining a variable with an email address # using single-quotes $email = 'lsbin0402@gmail.com' ; # Printing the non-interpolated string print ( $email );

输出如下:
lsbin0402@gmail.com

以上对插值问题的解决方案具有缺点。如果需要在字符串中替换变量的值以及使用" @"符号怎么办?那么该方法将毫无用处, 因为单引号不允许替换变量的值。为了避免这种情况, 使用了转义字符, 即反斜杠(\)。反斜杠插入到" @"之前, 如下所示:
#!/usr/bin/perl# Assining a variable with an email # address using double-quotes # Note: Using '\' to escape the # interpolation of '@' $email = "lsbin0402\@gmail.com" ; # Printing the interpolated string print ( $email ); # variable to be substituted $name = "lsbin" ; # variable to store the string $email2 = "\n$name\@gmail.com" ; # Printing the interpolated string print ( $email2 );

输出如下:
lsbin0402@gmail.comlsbin@gmail.com

转义转义字符
反斜杠是转义字符, 用于使用转义序列。当需要在插入的字符串中插入转义字符时, 将使用相同的反斜杠来转义转义字符替换为"(空白)。这允许在插值字符串中使用转义字符。
例子:
#!/usr/bin/perl# Using Two escape characters to avoid # the substitution of escape(\) with blank $string1 = "Using the escape(\\) character" ; # Printing the Interpolated string print ( $string1 );

输出如下:
Using the escape(\) character

转义双引号
在字符串中使用双引号表示字符串的结尾, 因此不能直接插入。要在插值字符串中插入双引号, 请在双引号之前使用反斜杠以转义其插值。
例子:
#!/usr/bin/perl# Escaping double-quotes with '\' $string = "This page is \"Geeks For Geeks\"." ; # Printing the interpolated string print ( $string );

【Perl带引号,内插和转义的字符串使用介绍】输出如下:
This page is "Geeks For Geeks".

    推荐阅读