Chinaunix首页 | 论坛 | 博客
  • 博客访问: 15318372
  • 博文数量: 2005
  • 博客积分: 11986
  • 博客等级: 上将
  • 技术积分: 22535
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-17 13:56
文章分类

全部博文(2005)

文章存档

2014年(2)

2013年(2)

2012年(16)

2011年(66)

2010年(368)

2009年(743)

2008年(491)

2007年(317)

分类:

2010-04-16 16:25:01

perl之defined函数

检查变量是否为空值

$madonna = ;
If (defined ($madonna)){
    print “The input was $madonna”;
}else{
    print “No input available!\n”;
}

 

Perl之有意思string重复操作符  x

“barney”x (4+1)        # “barney”x 5,              “barneybarneybarneybarneybarney”

 

Perl 之数组字符串列表  qw

qw(fred barney betty wilma dino );

 

但Perl 允许使用任何标点符号作为分界符

qw ! fred barney betty wilma dino !
qw# fred barney betty wilma dino # #有些像注释
qw( fred barney betty wilma dino )
qw{ fred barney betty wilma dino }
qw[ fred barney betty wilma dino ]
qw< fred barney betty wilma dino >

 

 如果要在字符串中使用闭分界符,很可能选择的分界符并不太恰当。如果不想或者不能改变分界符,那可以使用反斜线(\)
qw!Yahoo\! Google excite lycos !         #其中一个元素为:字符串yahoo!

 

($fred, $barney) = qw ;     #两个值被忽略了
($wilma,$dino) = qw[flintstone];         #$dino 为undef

 

Perl之数组定义 

($rocks[0],$rocks[1],$rocks[2],$rocks[3]) = qw/talc mica feldspar quartz/;
当想引用这个数组时,Perl 有一种简单的写法。在数组名前加@(后没有中括号)来引用整个数组。

@rocks = qw /talc mica feldspar quartz/;

 

Perl之数组  POP

pop 操作将数组的最后一个元素取出并返回

@array = 5..9;
$fred = pop @array;               #$fred 得到9,@array 现在为(5,6,7,8)
$barney = pop @array;           #$barney gets 8, @array 现在为(5,6,7)
pop @array;                          #@array现在为(5,6)(7 被丢弃了)

 

Perl 之数组   PUSH

 和 pop 相反的操作是push,它可以将一个元素(或者一列元素)加在数组的末尾

@array=5,6; 

push @array,0;                     #@array现在为(5,6,0)
push @array,8;                     #@array现在为(5,6,0,8)
push @array,1..10;            #@array现在多了10 个元素
@others =qw/9 0 2 1 0 /;
push @array,@others;          #@array现在又多了5 个元素(共有19 个)

 

Perl之数 组    shift和unshift

push 和pop 对数组的末尾进行操作(或者说数组右边有最大下标的元素)。相应的,unshift 和shift 对一个数组的开头进行操作(数组的左端有最小下标的元素)。

@array = qw# dino fred barney #;
$m = shift @array;                   #$m 得到“dino”, @array 现在为(“fred”, “barney”)
$n = shift @array;                   #$n 得到”fred”, @array 现在为(“barney”)
shift @array;                           #@array 现在为空
$o = shift @array;                   #$o 得到undef, @array 仍为空
unshift @array,5;                    #@array 现在为(5)
unshift @array,4;                    #@array 现在为(4,5)
@others = 1..3;
unshift @array, @others;         #array 现在为(1,2,3,4,5)


和pop 类似,如果其数组变量为空,则返回undef。

 

Perl之控制结构函 数    foreach

 

foreach $rock (qw/ bedrock slate lava /){
      print “One rock is $rock.\n”;          #打印出3 种rocks
}
控制变量(本例中为$rock)每一次迭代从列表中取出一个新值。第一次为“bedrock”,第三次为 “lava”。

@rocks = qw/ bedrock slate lava /;

foreach $rock(@rocks){
      $rocks = “\t$rocks”;                             #@rocks 的每一个元素前加入一个tab
      $rocks . = “\n”;                                  #每一个元素后加一个换行符
}
print “The rocks are:\n”,@rocks;              #每一个元素都被缩进了,并且一个元素占一行

返回结果:

the rocks are:
        bedrock
        slate
        lava
如果有一个变量和控制变量有相同的名字:“$rock”,不用担心会混淆它们。

 

Perl之reverse操作

reverse(逆转)操作将输入的一串列表(可能是数组)按相反的顺序返回。

@fred = 6..10;
@barney = reverse @fred;                   #得到10,9,8,7,6
@wilma = reverse 6..10;                      #同上,没有使用额外的数组
@fred = reverse @fred;                       #将逆转过的字符串存回去
注意最后一行,其中@fred 使用了2 次。Perl 通常先计算变量的值(赋值号右边),再进行赋值。

注意reverse 返回逆转的列表,它不会改变其参数的值。如果返回值没有赋值给某个变量,那这个操作是没有什么意义的:
reverse @fred;                                 #错误,没有改变@fred 的值
@fred = reverse @fred;                    #改变了@fred 的值

 

Perl之sort操作

sort 操作将输入的一串列表(可能是数组)根据内部的字符顺序进行排序。

@rocks = qw/ bedrock slate rubble granite /;
@sorted = sort @rocks;                          #得到bedrock, granite, rubble, slate
@back = reverse sort @rocks;                 #为slate 到bedrock
@rocks = sort @rocks;                           #将排序的值写回@rocks
@numbers = sort 97..102;                      #得到100,101,102,97,98,99
从最后一个例子可以看到,如果将 数字按照字符串进行排序可能得到没有意义的结果。当然,默认的排序规则下,任何由1 开头的字符串先于由9 开头的字符串。和reverse 一样,其参数是不会受到影响的。如果想将某个数组排序,那必须将排序之后的结果存回数组中。

阅读(1565) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~