在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
访问数组中的元素 $fred[0] $fred[1] $number=2.75; print $fred[$number-1] 结果就是print $fred[1] 特殊的数组索引1.对索引值超过数组尾端的元素进行赋值,数组将会根据需要自动扩大 2.对最后一个元素索引值 例如数组名围rocks 则最后一个索引值为 $#rocks 列表直接量 list literal (1,2,3)包含1,2,3,这三个数字的列表 (1..5)表示 1-5五个数字 ($m,17) qw简写 省略引号 qw(fred barney betty wilma dino) 列表 列表的赋值 ($fred,$barney,$dino)=("flintstone","rubble","undef"); 当变量的个数多个给的哪个的列表值得个数,那么多出来的变量会被设置为undef 例子:($a[0],$a[1],$a[2])=qw/talc mica/; 引用整个数组 在数组名前加上@符号即可 后边不加索引值 例如@rack 代表所有的rack 可用于赋值操作 @rack=qw/bedrock slate lava/; 将一个数组中的列表复制到另一个数组 @copy=@quary pop和push操作符 栈的操作 新增元素到数组尾端,存放到更高的索引值的新位置即可
pop用于去除数组中的最后一个元素; 例子: @array=5..9; $f=pop(@array);#$f的值为9,而@array现在是(5,6,7,8); 也可取消掉括号 pop @array push 用于添加一个元素或是一串元素 到数组的尾端 push(@array,0);最后一个元素是0
shift和unshift操作符 pop和push都是从数组右边开始弹出和压入 shift和ushift是从左边开始弹出和压入 @array=qw #dino fred barney#; $m=shift(@array); //$m值为dino array数组为(fred barney) unshift(@array,5);@array现在是只有一个元素的列表(5) splice操作符 push-pop和shift-unshift均是针对数组首位操作的。如果希望添加或移除数组中间的某些元素,需要用到splice操作符。 splice 目标数组,操作的开始位置,[3参],[4参]; 例子:@array=qw(p d f b b); @removed=splice @array,2;//@array=(p d); //@removed=(f b b); 3参指定要操作的元素长度,代表要操作的元素个数,可以删除掉数组中间的一个片段; @array=qw(p d f b a); @removed=splice @array,1,2; //@removed=qw(d f);@array=qw(p b a); 4参是要替换的列表 3参设为0 即可不删除地插入新列表; @array=qw(p d f b a); @removed=splice @array,1,0,qw(w); // @removed变为qw() @array变为qw(p w d f b a); 字符串中的数组内插 例子: @rocks为列表数组 print “quartz @rocks limestone \n”; 注意邮件中的@符号 插入的是数组 而非@地址 $fred[3] 为数组 ;${fred}[3]为变量 $fred的值 foreach控制结构 例子:foreach $rock(qw/ b s l /) { print "one rock is $rock.\n"; } 在循环中修改了控制变量的值,也同时修改了这个列表元素本身 @rocks= qw/b s l/; foreach $rock($rocks) { $rock="\t$rock";//在@rocks的每个元素前加上制表符 $rock.="\n";//同时在末尾加上换行符 } print "the rocks are:\n",@rocks;各自占一行,并使用缩排 当循环结束后,控制变量的值仍然是循环执行之前的值,perl会自动保存foreach循环的控制变量并在循环结束之后还原,在循环执行期间,我们无法访问改变已经存储的值,所以当循环结束时,变量仍然保持循环前的值,如果它之前从未被赋值,那就仍然是undef; $rock="shale"; @rocks=qw /bedrock slate lava/; foreach $rock(@rocks){ .. } print "rock is still $rock\n"; //结果为shale
perl最喜欢用的默认变量:$_ 省略上例中的$rock 用perl默认的变量$_ foreach (1..10){ print "i can count to $_!\n"; } 例2:$_="fuck you"; print; //默认打印$_的值 reverse操作符 读取列表或数组的值,并安装相反的次序返回该列表。 例子:@fred=6..10; @barney=reverse(@fred);#得到10,9,8,7,6 注意 reverse会返回次序相反的列表,但是他不会修改传进来的参数。 例:reverse @fred;#不会修改@fred的值 sort操作符 读取列表的值,会根据内部的字符编码顺序对他们进行排序。 按照字符在计算机内部表示的代码点排序。 例子:@rocks=qw/b s r g/; @sorted=sort(@rocks); #得到的结果为b g r s 注意数字当做字符串排序会和期望值有出入 each操作符 对数组调用each会返回数组中下一个元素对应的两个值 该元素的索引以及该元素的值 例子1:use 5.012;#perl版本 my @rocks=qw /b s r g /; while(my($index,$value)=each @rocks ){ say "$index:$value"; } 例子2:根据索引从小到大一次遍历,借助索引值取得元素的值: @rocks=qw/b s r g /; foreach $index(0..$#rocks){ print "$index:$rocks[$index]\n"; } 例子1,2实现的功能相同 ******标量上下文与列表上下文*****非常重要 本节非常重要 同一个表达式出现在不同的地方会有不同的意义。 perl期望得到什么,那就是该表达式的上下文
|
请发表评论