Perl(格式和字符串处理) z

52 篇文章 0 订阅

 

学习Perl推荐使用Perl IDE(功能虽然无法和VS 2005Eclipse 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字符串处理

熟悉其最强大的三个函数:substrpackunpack

#大小写处理函数 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";

#packunpack函数用于字符串的打包和解包,功能非常强大,支持多种打包格式

#字符串处理的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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值