现在的位置: 首页 > 综合 > 正文

PERL数组的遍历

2013年12月05日 ⁄ 综合 ⁄ 共 944字 ⁄ 字号 评论关闭

     在双引号内可以使用@直接输出数组

@rocks=qw(flinstone slate rubblke);
print "quarrz @rocks limtstone\n";
#print "fred@rocks.com.cn";#如果我们真的想要输出@21136.com.cn,那么我们需要将@转义,即\@;或者直接使用单引号
@fred=qw(hello dolly);
$y=2;
$x="This is $fred[1]`s place\n";
print $x;
$x="this is $fred[$y-2]`s place\n";
print $x;
print @fred;
print "\n";
$rock="ads";
foreach $rock(@fred)
{
	$rock.="\n"	;
}
print @fred;
print $rock;

foreach可以遍历整个数组,但是不同的是

在每次循环迭代时,控制变量,比如$rock不是列表元素的复制品,而他实际上就是列表元素,也就是说如果在循环中修改了控制变量,实际上就是修改了列表,然而当,循环结束

后控制变量仍然是循环之前的数据,如果未被赋值过那它就还是undef

PERL中的默认变量"$_"

参考代码:

@tmp=qw(abc bcd efg);

foreach(@tmp)

{

    print $_;

   print "\n";

}

默认变量,即当未告知PERL使用哪一个变量或者数值的时候会自动使用的变量,不需要程序员自行声明的变量

reverse操作符,即将列表中的值进行反向操作,需要注意的是该操作并不会改变传递进来的参数,因此如果没有被赋值的列表,则该操作不再具有意义

sort操作符读取列表中字符的值,并且根据字符编码的升序进行排列。

参考代码:

@tmp=qw(a b c d);

@sorted=sort(@tmp);

print @sorted;

一个例外的实例

@number=qw(97 98 99 100 101 102);
@sorted=sort(@number);
foreach(@sorted)
{
    print $_;
    print " ";
}

输出的结果是100 101 102 97 98 99

为什么会这样呢?因为根据默认的排序规则,排在首位的,先进行比较,首位的1自然要比9要小,所以,100,就排在了99的前面

抱歉!评论已关闭.