学习Perl推荐使用Perl IDE(功能虽然无法和VS 2005,Eclipse 3.1那样功能那样强大),但是其支持断点处理功能,已经比直接使用命令行功能强大多了。
此免费软件的下载点:http://open-perl-ide.sourceforge.net/
其他Perl软件列表看此推荐:http://www.shengfang.org/blog/p/perlidesumm.php
Perl格式处理
#1.format
format STDOUT=
@<<<<<<<<@||||||||@>>>>>> @.## @.######
$string1,$string2,$string3,$pi,$pi
.
$string1="zhang";
$string2="love";
$string3="chan";
$pi="3.1415926";
write;
##########
$display=1;
if($display)
{
$here= <<EOD;
zhang
bufeng
love
China .
EOD
print "$here/n";
}
########
$: ="";
format STDOUT=
Name:^<<<<<<<<<<
$person
Sex:^<<<
$person
Age:^<
$person
.
$person="zhangbufengmale23";
write;
########
format standformat_top=
@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
"Page $%"
Employees
FirstName LastName ID Extension
-----------------------------------------
.
format standformat=
@<<<<<<<<<<<@<<<<<<<<<<<@<<<<<<@<<<<<
$firstname $lastname $ID $extension
.
$firstname=" Cary ";
$lastname="Grant";
$ID="123";
$extension="x45";
open(FILEHANDLE,">>D://perlproject//page.txt") or die("can't open this file");
select FILEHANDLE;
$~=standformat;
$^=standformat_top;
$==1;
for($loop=1;$loop<10;$loop++)
{
write;
}
Perl字符串处理
熟悉其最强大的三个函数:substr,pack,unpack!
#大小写处理函数 lc(转为小写) uc(转为大写)
$text="ZhangBufeng";
$text2=lc $text;
$text3=uc $text;
print "$text2/n";
print "$text3/n";
#将第一字母变为小写(lcfirst),将第一个字母大写(ucfirst)
$string="zhang";
$string2=lcfirst $string;
$string3=ucfirst $string;
print "$string2/n";
print "$string3/n";
#顺序查找string位置(index),逆序查找string位置(rindex)
$string="zhang bu feng zhang bu feng";
$position1=index($string,"bu");
$position2=index($string,"bu",10);
$position3=rindex($string,"zhang");
$position4=rindex($string,"zhang",10);
print "$position1,$position2,$position3,$position4/n";
#获取子串函数substr,功能非常强大,可以直接支持以一个字符串代替字符串的一个子串。
#字符串处理的MVP
$text="Zhang bufeng 爱 ChanChan";
$replace_to="爱";
$replace_with="喜欢";
substr($text,index($text,$replace_to),length($replace_to),$replace_with);
print "$text/n";
#pack和unpack函数用于字符串的打包和解包,功能非常强大,支持多种打包格式
#字符串处理的MVP
$decimal=17;
$newdecimal=unpack("B32",pack("N",$decimal));
print "$newdecimal/n";
$string="张步峰爱中国";
@array1=unpack("c*",$string);
@array2=unpack("C*",$string);
print (join(",",@array1),"/n");
print (join(",",@array2),"/n");
$string1=pack("c*",@array1);
$string2=pack("C*",@array2);
print "$string1/n";
print "$string2/n";
#打印格式sprintf
$value=1234.56789;
print sprintf "%.4f/n",$value;
#字符串比较函数 eq,ne,cmp,lt,gt,le,ge.使用cmp就好。
$string1="步峰";
$string2="步峰";
if($string1 eq $string2)
{
print "$sting1==$string2/n";
}
if($string1 ne $string2)
{
print "$string1!=$string2/n";
}
if( ($string1 cmp $string2)==0)
{
print "$string1==$string2/n";
}
$string1="zhang";
$string2="chan";
if($string1 lt $string2)
{
print "left < right /n";
}
if($string1 gt $string2)
{
print "left > right /n";
}
if($string1 le $string2)
{
print "left < right /n";
}
if($string1 ge $string2)
{
print "left > right /n";
}
#
$string="张步峰爱中国";
@array=split(//,$string);#这种方法无法将其进行分成"张","步","峰","爱","中","国"等单字
print (join(",",@array),"/n");
#演示中文字符夹带英文字符的反序(使用了多个函数)
print "------begin-----/n";
$string1="中国love!张步峰";
@array=unpack("C*",$string1);
$length=$#array;#此数组的最后一个下标
for(;$length>=0;)
{
if($array[$length]<=128)
{
#英文或者标点
push(@array2,$array[$length]);
$length=$length-1;
}
else
{
#中文字符
push(@array2,$array[$length-1]);
push(@array2,$array[$length]);
$length=$length-2;
}
}
$string2=pack("C*",@array2);
print "$string2/n";
#
$dir=dir;
print qx/$dir/;
@name=qw/zhang bu feng chan chan/;
print join(",",@name);s
参考资料:《Perl 技术内幕》 Black Book Steven Holzner
<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>