用s///进行替换:
和m//用法一样,返回的是布尔值,替换成功为真,失败为假。
例:
$_ = "He'sout bowling with Barney tonight.";
s/Barney/Fred/;
#把Barney替换成Fred, 也可以捕获位置,s///只会进行一次替换
用/g进行全部替换:
例:s/^\s+|\s+$//g;
#去除所有开头和结尾空白符
不同的定界符:
s///可以用其他定界符,不成对的定界符用3个就可以,如果是成对的定界符,就要用两对。
例:s{fred}{barney}
大小写转换:
\U | 所有变大写 |
\L | 所有变小写 |
\E | 关闭大小写功能 |
\u | 只对一个字母大写 |
\l | 只对一个字母小写 |
split操作符:
例:@array =split/\t/,"字符串";
把字符串以制表符分割,分割后放到数组array中,\t的位置放的是分割的符号,若只要split没有其他参数,会默认以空白符分割$_中字符串。
join操作符:
和split相反,把所有的都组合起来。
用法:my $结果 =join "连接符",字符串1,字符串2,字符串3,字符串4...;
例:my $x =join "-",1,2,3,4;
结果:1-2-3-4
非贪婪量词:
+、*、?、{n,m}等都是贪婪量词,在后面加上一个?问号,如:+?,使它尽可能少的从头到位匹配。
一次更新多个文件:
$^I中是个字符串,该字符中就会变成备份文件的扩展名(要和<>一起使用)。
流程:①打开要操作的文件,并把名改成$^中字符串为结尾的名字。②然后打开一个新文件,起名为源文件的名。③把输出变为新文件,写到新文件中。
例:
chomp(my$date:'date');
$^I =".bak";
while(<>){
s/^Author:.*/Author:Randa L Schwartz/;
s/^Phone:.*\n///
s^Pate:.*/Date:$date/;
}
从命令行直接编辑:
例:perl -p -i.bak -w -e 's/Randall/Randal/g' fred*.dat;
perl | 以perl程序处理 |
-p | while(<>){print}; |
-i | 备份名 |
-w | 开警告 |
-e | 告诉后面就是可供执行的代码 |
等效代码:
$^I = ".bak";
while(<>){
s/Randall/Randal/g;
print;
}