分享

perl 删除数组元素Perl中数组的使用

 clhon 2011-08-22
数组是perl里面一种很是有用的工具。我们可以通过下面的体式格局定义数组: 
  @a=("你好","great","cipher"); 
  @b=(1,2,3,4,5,6,7); 
  @b的定义体式格局还可以写成下面的形式: 
  @b=(1..7); #这种体式格局对需要1到10000的初始值当数组真实太重要了。 
  @b=("a".."z"); 
  也是可以的,可是我想不出来对中国人有什么用。定义一个空数组可以用下面的体式格局: 
  @c=(); 
  拜候数组通过下面的体式格局(下标和c语言一模一样,从0起头,basic的用户要注意了): 
  $b[0]=10000; 
  注意这里指导符酿成为了$不是@。通过这个变化暗示这时正在拜候一个单独的数值。而不是一组数值。还可以施用多个下标,可是这时就要施用@指导符了。例如: 
  @b[5,7,9]=(45,56,67); 
  这种情况下,print $b[8];将会在施用了perl -w获得一个施用未定义变量的错误,其他情况下什么都不会发生。 
  数组之间相互拷贝,可以用下面的体式格局: 
  @d=@c; 
  这样要比c语言简单多了。同c语言不同,perl的数组是可以动态转变大小的。是以我们可以追加,删除数组内的元素。追加一个元素可以施用这种体式格局: 
  @c=(@c,"你好"); 
  perl里面有一个专门的函数用来惊醒追加操作叫做push,push的施用方法如次: 
  push(@c,"你好"); 
  push(@c,("你好","halloha")); 
  push(@c,@a); 
  这里可以看到,可以给数组追加一个元素,一组元素甚或另外一个数组。另外,在perl的数组中可以放不同类型的标量。这一点儿在c程序员的眼中可能有点怪异,可是如 果记住perl里面的一切都是引用就可以了。或者理解成这是一个void类型的指针的数组。有了push,就一定有pop。pop就是从数组的最后取出一个元素。用法为: 
  pop(@a); 
  既是可以从数组的末尾加入元素,那末一定也能够从数组的开首加入元素。那末这个功能是由unshift函数提供的。用法为: 
  unshift(@c,"你好"); 
  unshift(@c,("你好","halloha")); 
  unshift(@c,@a); 
  有了unshif就一定会有shift了。shift的功能是从数组的开首取出一个元素。用法为: 
  unshift( @a); 
  有了操作准组两端的函数那末一定也会有操作准组中心部门的函数,这个函数就是splice,splice函数有3个效用。熬头个效用是向数组中心的一部门插进去内部实质意义。例如: 
  @d=(1..9); 
  my @e=("a".."f"); 
  splice(@d,2,2,@e); 
  将会获得12abcdef56789,注意这里是从第二个起头插进去,不是从下标为2的元素起头插进去的。splice的第二个功能是删除,例如在刚才的代码上面再加之: 
  splice(@d,2,6); 
  将可以获得1256789;splice的第3个功能就是删除到末尾。语法为: 
  splice(@d,2); 
  就是从第二个起头,删除到末尾。我们还应该有一个可以把全般数组合并成一个标量的函数。这个函数就是join,join有两个参数,熬头个参数是合并时放在元素之间的支解符,第二个是举行操作的数组。 例如: 
  my @g=(1,2,3); 
  join(" ",@g); 
  将可以获得“1 2 3”,还有3个函数我们昨天已经见过了,就是undef,chop和chomp。undef(@a); 的效用是把@a的内部实质意义清空。chop(@a); 的效用是把数组内每个元素的末尾去一个字符。而chomp(@a); 的效用则是把数组内的每一个元素的末尾的换行符去掉。我们还应该先容一个函数就是scalar,这个函数取得数组的长度。例如: 
  my @h=(1,2,3); 
  scalar(@h); 
  将可以获得3。可是我们经常不这么用,因为在将数组向标量转换时就会返回数组的长度,例如次面的操作就可以。 
  my @i=(1,2,3,4); 
  print @i."\n"; 
  将会打印出4。 好了,今天就到这里吧,最后是一个概括了今天大部门内部实质意义的程序。我写的。中心会输出很多错误信息。呵呵。 
  #!/user/bin/perl -w 
  use strict; 
  { $|=" "; 
  my @a; 
  @a=(1,2,3); 
  @a[4,6]=(23,34); 
  #print $a[5]; 
  #quoted because it would cause error 
  my @b; 
  @b=("because","haul"); 
  push(@b,"grand"); 
  print @b; 
  print "\n"; 
  push(@b,("puppy","kitty")); 
  print @b; 
  print "\n"; 
  push(@b,@a); 
  print @b; 
  print "\n"; 
  push(@a,@b); 
  print @a; 
  print "\n"; 
  my @c; 
  @c=(1,2,3,"你好"); 
  print @c; 
  print "\n"; 
  pop(@a); 
  print @a; 
  print "\n"; 
  my @d; 
  @d=(1..9); 
  print @d; 
  print "\n"; 
  my @e=("a".."f"); 
  splice(@d,2,2,@e); 
  print @d; 
  print "\n"; 
  splice(@d,2,6); 
  print @d; 
  print "\n"; 
  } 
  嘻嘻,程序很长,不外试着运行一下,全是上面所讲的内部实质意义的应用,加深一下你的印象吗。 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多