Perl 字符串是一系列字符,正如我们在标量指南中所讨论的那样,字符串被认为是 Perl 编程语言中的标量变量。有两种方法可以使用'
(单引号)和"
(双引号)在 Perl 中定义字符串。
Perl 中的字符串声明和初始化
由于字符串是标量,它们的名称以$
开头。例如:
my website = "BeginnersBook";
myeditor = "Chaitanya";
print "editor works forwebsite";
输出:
Chaitanya works for BeginnersBook
字符串插值 – 单引号和双引号
我已经在 Perl 标量中介绍了这个主题。
引号不是字符串的一部分,它们只是指定字符串的开头和结尾。您可能认为单引号和双引号都有相同的用途,但事实并非如此。它们用于不同的 2 例。要理解这两者之间的区别,让我们看一下下面的例子。
#!/usr/bin/perl
print "Welcome to\t Beginnersbook.com\n";
print 'Welcome to\t Beginnersbook.com\n';
This would produce the following 输出:
Welcome to Beginnersbook.com
Welcome to\t Beginnersbook.com\n
您可以清楚地看到双引号内插转义序列\t
和\n
的区别,但是单引号没有。
例 2:单引号和双引号:
#!/usr/bin/perl
website = "Beginnersbook";
print "Website Name:website\n";
print 'Website Name: $website\n';
输出:
Website Name: Beginnersbook
Website Name: $website\n
这是双引号的另一个优点,因为它们是“可变插值”。这意味着双引号内的变量名称将替换为其值。单引号字符串中不会发生这种情况。
单引号的使用
您可能正在考虑避免在 perl 程序中使用单引号,但在某些情况下您可能希望使用单引号。
例如如果你想在变量中存储电子邮件地址,那么双引号会引发错误,在这种情况下你需要使用单引号。对于例如
$email = "[email protected]"; # would throw an error
$email = '[email protected]'; # would work fine.
这里的问题是@gmail
被内插为数组。以@
符号开头的变量被内插为数组。我们还可以通过使用\
转义序列避免双引号错误,我们已在下一节中讨论过。
Perl 中的反斜杠
反斜杠可以执行以下两个任务之一:
1)它消除了跟随它的字符的特殊含义。对于例如打印\$myvar
会产生$myvar
输出而不是变量myvar
值,因为$
前面的反斜杠(\
)消除了$
的特殊含义
2)它是反斜杠或转义序列的开始。对于例如\n
是用于换行的转义序列
有什么用呢?
相信我,你会在 perl 中开发应用时经常使用它。假设您要打印包含双引号的字符串。对于例如如果我想打印:Hello This is "My blog"
然后我需要使用以下逻辑:
#!/usr/bin/perl
msg = "Hello This is \"My blog\"";
print "msg\n";
输出:
Hello This is "My blog"
字符串操作
让我们看看我们可以对字符串执行的操作。
连接
要连接字符串,请使用点(.
)运算符。在下面的例子中,我们连接三个字符串,$str1
,空格和$str2
。
$str1 = "Cherry";
$str2 = "Coco";
$mystr = $str1 . " " . $str2;
print "$mystr\n";
输出:
Cherry Coco
重复
要重复具有指定次数的字符串,请使用字符x
后跟数字。在下面的示例中,我们使用了字符x
之后的数字 4,这就是字符串在输出中重复四次的原因。
$str = "Cherry";
$mystr = $str x 4;
print "$mystr\n";
输出:
CherryCherryCherryCherry
获取子串 – substr()
函数
substr()
函数用于从给定字符串中获取子字符串。
use strict;
use warnings;
# This is our original string
my str = "I know who you are, I will find you";
print "My original String is:str\n";
# substring - starting from 8th char till the end of string
my substr1 = substr(str, 7);
print "My First substring is: substr1\n";
# substring - starting from 8th char and length of 11
mysubstr2 = substr(str, 7, 11);
print "My Second substring is:substr2\n";
输出:
My original String is: I know who you are, I will find you
My First substring is: who you are, I will find you
My Second substring is: who you are
该相同功能可用于用新内容替换字符串的一部分。让我们举个例子来理解这个:
use strict;
use warnings;
# This is our original string
my str = "I know who you are, I will find you";
print "My original String is:str\n";
my newstr = substr(str, 7, 11, "you are the killer");
print "My updated String is: $str\n"
输出:
My original String is: I know who you are, I will find you
My updated String is: I know you are the killer, I will find you
在 Perl – length()
函数中查找字符串的长度
要在 Perl 中查找字符串的长度,请使用length()
函数。此函数计算字符串中的字符数(包括空格)并返回它。
use strict;
use warnings;
my str = "I know who you are, I will find you";
print "length of my string is:", length(str);
输出:
length of my string is:35
Perl 中的字符串比较
为了比较两个字符串,我们使用 Perl 中的eq
运算符。
use strict;
use warnings;
my str = "hello";
mystr2 = "hello";
if (str eqstr2){
print "str and str2 are same\n";
}
输出:
str and str2 are same