随笔分类 -  Perl

Perl到底是什么意思?
摘要:学习perl也有一段时间了,如果连perl是什么意思都不知道,那就太汗颜了,听好啦!perl == Practical Exstraction and Report Language,中文叫做实用抽取和报表语言。 阅读全文

posted @ 2011-08-16 16:46 perlman 阅读(880) 评论(0) 推荐(0)

Perl链接数据库
摘要:Perl链接数据库并不难,但是对于很多初次解除的人来说,经常会遇到一些问题,本文总结了一些无法链接的问题,供大家参考perl链接SQL Server由于我机器上只有SQL Server Express版本,所以就以它为例,企业版大同小异。一 确保数据库服务已经开启开始菜单-Microsoft SQL Server200x-Configuration tools-SQL Server Configuration Manager,展开SQL Server 200x Services,确保State列状态为running,如下图所示。二 确保数据库可以连接首先用SSMS(SQL Server Man 阅读全文

posted @ 2011-08-13 11:39 perlman 阅读(1844) 评论(0) 推荐(0)

perl复杂数据结构
摘要:数组的数组定义方法一my @person1 = ("zdd", 30, "man") ;my @person2 = ("autumn", 27, "woman") ;my @persons =(\@person1, \@person2) ;方法二my @persons =( ["zdd", 30, "man"], ["autumn", 27, "woman"]) ;方法三 匿名数组,这个方法需要用特殊的访问方法。my $persons 阅读全文

posted @ 2011-08-12 17:55 perlman 阅读(2621) 评论(0) 推荐(0)

一个关于正则表达式的疑问
摘要:s/\c[ABCD]/ /gs/\cA|\cB|\cC|\cD/ /g以上两者难道不相等么?为什么后者能工作而前者却不能? 阅读全文

posted @ 2011-08-12 15:43 perlman 阅读(261) 评论(2) 推荐(0)

Perl中的特殊符号
摘要:$_俗称perl的老地方,当你的程序中未告知使用哪个参数或者变量时,perl就会自动使用$_中的值,比如for(1..10){ print ;}这里print没有指定参数,所以它就会使用$_,那$_里面是什么呢?每次循环$_的值都会变化,所以$_实际上就是1 .. 10这10个值,所以上面的代码打印的结果就是12345678910$!当且仅当某个函数调用失败时才会设置该变量,所以经常这样使用这个变量open FILE,"<d:/code/zdd.txt" or die $! ;$/这是perl中的行分隔符,默认是换行符,可以改变这个变量以便一次读入整个文件,如下sub 阅读全文

posted @ 2011-08-08 10:41 perlman 阅读(6968) 评论(0) 推荐(1)

perl智能匹配操作符~~
摘要:介绍智能匹配操作符,英文叫做smart matching operator,写法是连续的两个波浪线~~,为什么说它是智能的呢?因为它能够根据操作符两侧的操作数进行智能匹配,具体智能到什么程度呢?听我一一道来!具体应用案例一,判断某个元素是否在给定的数组中这算是一个比较常见的问题,如果不用智能匹配操作符的话,我想多数人会这样写程序my $value = 3 ;my @array = (1, 2, 3, 4, 5) ;sub test{ for(@array){ if ($value == $_){ print "$value was found!\n" ; return ; 阅读全文

posted @ 2011-08-06 18:31 perlman 阅读(11386) 评论(3) 推荐(4)

perl常用正则表达式集合
摘要:本文罗列了一些常用的正则表达式,不间断更新中。。。去除前导空格s/^\s+//去除尾部空格s/\s+$//去除前后空格s/^\s+|\s+$//g匹配任意字符/.*/s这里/s表示连换行符也匹配,因为.是不匹配换行符的,所以上面的表达式匹配任意字符。下面看第二种方法,perl中的元字符.能匹配所有单个字符,但是不能匹配换行符,如果要匹配的文本含有换行符,那么.将无法胜任,比如下面的xml文件。<Response> <Code>200</Code> <Description>Success</Description></Respo 阅读全文

posted @ 2011-08-06 10:25 perlman 阅读(9422) 评论(0) 推荐(0)

perl去除文本行首尾空格
摘要:perl中并没有其他语言中的trim函数,所以如果想去除文本行的首尾空格,只能自己写,不过用正则写起来也很简单,代码如下。use strict ;# Remove all leading whitespacesub trimleft{ my @array = @_ ; foreach(@array){ s/^\s+// ; } return @array ;}# Remove all trailing whitespacesub trimright{ my @array = @_ ; foreach(@array){ s/\s+$// ; } return @array ;}# Remove 阅读全文

posted @ 2011-08-06 10:16 perlman 阅读(7275) 评论(0) 推荐(0)

关于hash
摘要:下面的代码有何区别?my %table ;my %table = () ;my %table = {} ;前两者是一样的,都是空hash表,第三行是匿名空哈希表,与前两者是不同的。 阅读全文

posted @ 2011-08-06 08:42 perlman 阅读(239) 评论(0) 推荐(0)

perl函数原型
摘要:大多数perl函数定义都是没有指定参数个数及类型的,所有传入的参数都保存在@_数组中,如果想指定参数个数及类型,那么就要使用函数原型了。看下面的例子use strict ;sub test($$){ my($var1,$var2) =@_ ; print$var1,"\n" ; print$var2,"\n" ;}test(1,2) ;1 ;上面的test函数就使用了函数原型,在函数定义时元括弧内加入参数定义,上面$$表示两个标量参数。这样就保证test值接受两个参数,且都是标量,所以下面的调用都可以test(1,2) ;test(1,"a&q 阅读全文

posted @ 2011-08-05 22:05 perlman 阅读(754) 评论(0) 推荐(0)

Perl子过程调用
摘要:Perl子过程调用有以下几种方式&name(para1, para2, ... paran) ;&name para1, para2, ... paran ;name(para1, para2, ... paran) ;name para1, para2, ... paran ;什么时候&必须使用?一 调用代码位于函数声明之后的use strict ;&test ; # & is must, since test was invoked before declarationsub test{ print "This is test\n" 阅读全文

posted @ 2011-08-04 22:10 perlman 阅读(622) 评论(0) 推荐(0)

perl中的循环控制
摘要:Perl中的next关键字结束本次循环,相当于C/C++中的continue。Perl中的last关键字结束整个循环,相当于C/C++中的break。 阅读全文

posted @ 2011-08-02 08:58 perlman 阅读(902) 评论(0) 推荐(0)

perl类定义必须返回真值
摘要:package Logger ;use strict ;sub new{ my $class = shift() ; my $self = {} ; bless $self, $class ; return $self ;}sub message{ shift ; my ($msg, $color) = @_ ; print "@: @_ \n" ; my $cmd = "echo -e \033[40;$color$msg\033[0m" ; # this does not work on windows, try it on unix/linux p 阅读全文

posted @ 2011-07-31 23:02 perlman 阅读(675) 评论(0) 推荐(0)

Perl中的类与继承
摘要:先定义一个Person类package Person ; # package name must be same as file namesub new{ my $class = shift ; my ($name, $age) = @_ ; my $self = { "name" => $name, "age" => $age, } ; bless($self, $class) ; return $self ;}sub set_name{ my ($self, $name) = @_ ; $self->{name} = $name ; 阅读全文

posted @ 2011-07-31 22:51 perlman 阅读(4008) 评论(0) 推荐(0)

Perl中判断数组或hash为空
摘要:perl中没有bool类型perl中没有bool类型,所有的判断都是通过数字类型和字符串类型来进行的。哪些类型为false标量只有三种,数字0,空字符串"", 字符串'0'("0")。矢量有空数组,空哈希。判断数组或哈希为空和标量一样,直接将数组或哈希放到if语句中即可my @list = () ;if(@list){ print "Not empty!\n" ;}my %hash = () ;if(%hash){ print "Not empty!\n" ;} 阅读全文

posted @ 2011-07-31 10:51 perlman 阅读(20625) 评论(0) 推荐(0)

perl语言编程第六章-子过程
摘要:子过程声明sub NAME ;子过程定义sub NAME{ 。。。}匿名子过程声明的时候没有名字,只有sub关键字加代码块。这种写法实在蛋疼,不知道有何好处?下面代码中subref是指向这个匿名子过程的引用。use strict ;my$subref=sub{ my ($a,$b) =@_ ; return$a+$b ;} ;print$subref->(1,2),"\n" ;通过use关键字引入另一个模块中的子过程。use qw(name1, name2, name3) ;子过程的调用直接调用NAME(LIST) #有圆括弧时,&可以省略。NAME LIST 阅读全文

posted @ 2011-07-30 23:59 perlman 阅读(521) 评论(0) 推荐(0)

Perl模块路径
摘要:有些模块定义中有::字符,这表示模块位于文件夹下,比如package Time::Local;require Exporter;use Carp;use Config;use strict;这里的Local模块就位于Time文件夹下,如图。 阅读全文

posted @ 2011-07-28 10:57 perlman 阅读(911) 评论(0) 推荐(0)

Perl高精度计时器
摘要:use strict ;use Time::HiRes qw(gettimeofday) ;sub Test{ # sec: seconds # usec: microsecond my ($start_sec, $start_usec) = gettimeofday() ; #======================# # Place your code here!# #======================# my ($end_sec, $end_usec) = gettimeofday() ; # Compute time elipsed my $timeDelta = ($e 阅读全文

posted @ 2011-07-27 17:33 perlman 阅读(1615) 评论(0) 推荐(0)

perl中的引用
摘要:为什么使用引用?在perl4中,hash表中的value字段只能是scalar,而不能是list,这对于有些情况是很不方便的,比如有下面的数据:Chicago, USAFrankfurt, GermanyBerlin, GermanyWashington, USAHelsinki, FinlandNew York, USA我们想要按国家将城市分类,每个国家后面对应城市列表,如果用perl4来做,必须将城市列表组合成字符串才行,如果用perl5就可以用引用来做,有了引用,就可以构造复杂的hash结构,就可以用列表作为hash的值了。如何定义引用方法一 使用斜线\定义变量的时候,在变量名前面加个\ 阅读全文

posted @ 2011-07-26 23:39 perlman 阅读(18051) 评论(3) 推荐(4)

perl上下文
摘要:my $para = @_ 这是标量上下文,$para得到的是@_中元素的个数。my ($para) = @_ 这是列表上下文,$para得到的是@_中的元素值。具体是什么上下文是由等号左边的变量类型决定的,等号左边是标量,则是标量上下文,等号左边是列表,则是列表上下文。强制指定标量上下文使用scalar函数my @a = (1..10) ;print @a ;#打印1-10print scalar @a ; #打印10,scalar强制到标量上下文,取元素个数。只有强制指定标量上下文的时候,却没有强制指定列表上下文的时候,因为你永远不需要这样做!perl语言入门中这么说的。我还没有体会到。 阅读全文

posted @ 2011-07-21 22:46 perlman 阅读(812) 评论(0) 推荐(0)

导航