1. 单引号字串是包含在一对单引号内的任何字符序列。Perl认为包含在单引号内的每一个字符都不具有任何特殊的意义。唯一的两个例外是换码序列反斜杆单引号(/’),它代表字串内一个应保持原样的单引号;以及两个连续的反斜杠(//),它代表字串内一个应保持原样的反斜杠。
2. 双引号是包含在一对双引号内的任何字符序列。在双引号字串中,可包含换行符(/n)、制表符(/t)或其他换码序列字符。Perl会把换马序列的结果字符插入双引号字串中。
换码系列 | 含义 |
/n | 换行 |
/r | 回车 |
/t | 制表符 |
/” | 字面的双引号 |
/’ | 字面的单引号 |
// | 字面的反斜杠 |
/$ | 字面的美元符 |
/@ | 字面的@字符 |
/% | 字面的%字符 |
/u | 大写下一个字符 |
/l | 小写下一个字符 |
/b | 退格 |
3. Perl提供了两个运算符以简化字串的构造并提高它的可读性。
Ø q,运算符把他的参数封闭在单引号中。如:
q ( Don’t cross the street )
q运算符会用单引号来替代开括号和闭括号。注意,对于单词“Don’t”中的嵌套单引号,没有使用换码序列。
Ø qq,运算符把他的参数封闭在双引号中。它的结果字串拥有一般双引号字串的所有特征,包括插入换码序列和变量。如:
qq ( Tim ask, “What time is it?”)
注意:嵌套的双引号不需要换码序列。
Ø qr,运算符用来创建和编译常规表达式。如:
$pattern = qr ( snow );
4. “Here”文档
Perl允许程序员“引用”代码块,如下:
<<标识符;
文本行
文本行
标识符
利用上面的”Here”文档,程序员可以创建跨越多行代码的字串。
Ø 注意在<<之后,必须加一个“结束字串”。也就是说,在标识符之后必须加一个标准的分号,从而定义一个“Here”文档的开始。
Ø 注意在<<和标识符之间是没有空格的。
Ø 另外,为了让perl顺利的识别出标识符,不要为其加上引号,而且必须将结束标识符放在一个空行的起始处——该行不可放置其它任何代码,包括文件结束标志(EOF)(用来结束一个文件的特殊标记)。
Ø 假如结束标识符在程序的最后一行,那么必须在标识符后键入回车符。
Ø “Here”文档最开始的标识符可以加引号,而用于结束的标识符却不可以加引号。
Ø 如果标识符不加引号或双引号,那么字串继承了双引号字串的特性,包括插入转码序列和变量。
Ø 如果标识符加上单引号,字串继承单引号的特征。
Ø “Here”文档常用在CGI脚本中使用,它是输出大量HTML而不需多次调用print函数的便捷方法。
print <<DONE;
print <<’DONE’;
$variable = <<DONE;
$variable = <<’DONE’;
5. 基本字串函数
Ø substr函数返回一给定字串的子串;使用语法如下:
substr ( string , offset ,length ,replacement )
² 该函数返回从字串位置offset开始,长度为length的子串。可以用replacement(它可能是字串或包含资产的变量)来替代函数要返回的子串。
² 如从字串的开始处提取子串,offset必须设置为0。
² offset和length可正可负,如果是负的,将从字串的结束倒数offset的位置开始提取子串。Length为负时,强制函数从字串结束处开始提取,直到倒数length个字符的位置。Length参数为可选项,如果length参数缺省,函数从倒数offset处开始提取直到字串结束。
Ø uc(uppercase)函数lc( lowercase)用于切换表达式中每个字符的大小写状态并将结果字符串返回。uc函数从参数中返回大写字串;lc函数从参数中返回小写字串。如果函数参数缺省,则应用于特殊变量$_。
Ø length函数返回字符表达式的长度。函数的返回值取决于参数是单引号字串或双引号字串。换码序列/n和/t只有当他们欻县在双引号中才会以换行符或制表位插入,否则,视为两个字符。函数length的参数必须是标量数值。
当变量$string作为参数传递给length函数,函数把它当作双引号封闭下来的字串处理。
Ø chop和chomp函数
² chop函数用于移除字串最后一个字符,并返回该字符。而一般程序员使用这个函数移除用户输入行结束处换行符。
² chop函数的参数可为列表变量。Chop函数移去列表参数中每个字串的最后一个字符。因为函数改变它的参数,所以,参数不需要一个文本列表或一个文本字串。
² 如果参数缺省,函数默认地应用于特殊变量$_。
² $/ 输入记录分隔符。$/ 默认值为换行符。
² chomp函数。如果$/的默认值为换行符,字串的最后一个字符匹配特殊变量$/,那么chomp函数将保证只移除换行符。如果提供列表字串作为参数,chomp函数将移除列表字串中每个字串的最后一个字符。如果没有提供参数,$_将作为默认参数。它的参数不需要时文本列表或文本字串。Chomp函数返回移除字符数(该数为标量)。
² 如果特殊变量$/包含空字串(“ ”),chomp函数移除字串结尾的所有换行符。
Ø 函数index和函数rindex
² 函数index返回给定字串在另一给定字串中的第一出处的位置,它使用如下语法:
index ( string, substring, startPostion )
该函数从字串startpostion处的字符开始查找子串,直到原字串中第一次发现子串或字串结束。如果子串没有找到,函数返回-1。字串可以是文本或标量。注意,startpostion参数十可选的。缺省该参数,函数将从字串的开始处查找。
² 函数rindex功能基本上与index相同,除了它以反方向进行查找,
Ø 函数join
join函数语法:
join ( separator, list )
该函数用于将列表中的个体字串合并成一个字串。返回的字串包括列表中的每个字串,并用特定的分隔符分开。分隔符可以是任何字串,但一般用逗号、冒号或其它适用的字段分隔符。例如:
join ( ‘and’, (1..5));
Ø split函数
split函数语法如下:
split ( /RegularExpression/, string, limit)
² 它用于查找字串并将其分解成独立的字段。一个字段包含两个定界符间(分隔符)的每个字符。常规表达式中每个非重叠匹配字符都可以认为是字段分隔符。
² 在“使用列表场合”下,split函数将原字串分解成独立的字段并以列表形式返回。在“使用标量场合”下,函数返回分解后的字段数。如果找不到匹配,函数将原字串返回为止包含一项的单项列表。参数limit限定了split函数可分解的最大字段数。
² Split函数中的所有参数都是可选的。参数从右至左依次缺省。limit参数缺省,由空字串组成的任何字段将不返回在列表中。如果string参数缺省,函数将操作特殊变量$_。如果所有参数都缺省,函数使用空白常规表达式/s+作为字段分隔符。
Ø tr / / /转换运算符
类似于替代运算符,转换运算符用特定字符来替代字串中找到的字符。Tr运算符的语法格式如下:
tr / searchCharacters / replacementCharacters /
转换运算符使用绑定运算(=~)在标量变量(字串)中查找searchCharacters中的特定字符,并用replacementCharacters中相应得字符替代他们。如果searchCharacters中的特定字符多于replacementCharacters中的字符,多余的特定字符用replacementCharacters中的最后一个字符替代。如果不绑定运算符,运算符查找和修改特殊变量$_。searchCharacters和replacementCharacters中的字符是个体字符或逻辑群字符(如:0~9或A~Z)
$existingString =~ tr / a-z / A-Z/;
上式将变量中的小写字母替换为大写字母。
$existingString =~ tr / ABC / +-*/;
将A用+替代,B用-替代,C用*替代。
修改符 | 含义 |
/c | 替代searchCharacters的补集 |
/d | 删除字串中没有相应替代字符的字符 |
/s | 忽略连续的、重复的匹配 |
例如:
$example =~ tr / ABCDE / ab / d;
替换找到的AB,却删除找到的C、D、E。
<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>