Perl语言入门学习笔记-12
上一篇 / 下一篇 2008-02-02 18:43:23 / 个人分类:编程吧
#前段时间,由于种种原因,Perl的学习被搁浅了。利用年前这段比较空闲的时间,把以前的笔记重新温
gEE}(Uq O0#习并整理修正了一下。后面还有几章,争取尽快学完。51Testing软件测试网FD|kK)f#zI^[
/~*NZ.Zqe0字符串处理与排序
1WU4QH Tje(s-L6AB051Testing软件测试网,B!_*FHE5g+用index寻找子字符串
X&`M5F'cc*B-h$@1eA0my $where=index($big, $small);
-z#f \l[k:I%S2A0在$big字符串里寻找$small字符串首次出现的位置(从0开始),返回值为整数,代表第一个字符出现的位置。如果无法找到,则返回-1。
"^.B#kR'B&p7[6R0#在某个字符串中重复搜索某个子字符串51Testing软件测试网?)Fa5cK:D$hU([$no
my $stuff="Howdy world!";51Testing软件测试网e1foq
^e:w
my $where1=index($stuff, "w"); #2
F|jh;^(}$f0my $where2=index($stuff, "w", $where1+1); #6
-~UN~3A3_0my $where3=index($stuff, "w", $where2+2); #-1
|5u5lR;U%nQ0第三个参数指明开始搜索的位置
;B"H.AUM]0my $last_slash=rindex("/etc/passwd", "/"); #451Testing软件测试网'h
X1h)y-Or s
[6N
rindex返回子字符串最后出现的位置(仍然是第一个字符出现的位置),实际上是从字符串尾端开始搜索并返回第一个找到的位置。
`9p E2l:q,wyk
P0+用substr操作子字符串
,z'b c8{b0$part=substr($string, $initial_position, $length);51Testing软件测试网"L-k%KlB1R
省略第三个参数获第三个参数超长,一直取到字符串尾部。第二个参数为负数时,表示从字符串尾靠嫉故?BR>my $string="Hello, world!";51Testing软件测试网(F$U6P,|,Z5b5Zv
substr($string,0,5)="Goodbye"; #$string变为"Goodbye, world!"
8q-W?hCmJ+|5Q:g)_,]5d0substr($string,0,5,"Goodbye"); 51Testing软件测试网 pnvh j?kf
#这是一个函数调用,第四个参数为替换后的子字符串,返回值为替换前的子字符串51Testing软件测试网;Q3kkcD
被替换的字符串的长度不一定要与替换的字符串的长度相同。51Testing软件测试网 e0D6|nDt[#m
substr($string,-20)=~s/fred/barney/g;
vJ'L3N5s3} h.v0#只处理字符串的最后20个字符,将所有的fred换成barney51Testing软件测试网%k6],k`&GIJK\+CVG
当然这些事情也可以让正则表达式去做,但是使用字符串处理的函数会更快一些。51Testing软件测试网-@N&]+[dnS
51Testing软件测试网'x!D-Bq!V3I
+用sprintf格式化数据51Testing软件测试网f/e)Oe&U*Hl&D
sprintf函数和printf函数有相同的参数(文件句柄除外),sprintf返回所要请求的字符串,而不输出。可将格式化的字符串存储在变量中。51Testing软件测试网
lQ_!iC6yUr
my $date_tag=sprintf
?sAisl0 "%4d/%02d/%02d %2d:%02d:%02d",51Testing软件测试网~-b+g*n,sv5J
$year,$month,$date,$hour,$minute,$second;
D3@7Zb/p0#按照2038/01/19 3:00:08的格式输出日期
9j9Q ]
lE/G0R0在格式数值前置0,表示必要时在数值前面补0以符合要求的宽度,否则要在前面用空格补齐。51Testing软件测试网mvbzWY{
my $money=sprintf "%.2f", 2.49997 #小数点后保留2位,进行四舍五入