设为首页 收藏本站
查看: 707|回复: 0

[经验分享] perl_常用的函数

[复制链接]

尚未签到

发表于 2018-8-31 08:33:44 | 显示全部楼层 |阅读模式
  这里说的是一些常见的内置函数:
时间函数:
  time;
  返回1970年1月1日起经过的无跳跃秒数。可以用gmtime和localtime函数做进一步的处理。
  times;
  返回一个四个元素的列表,给出当前进程及其子进程用户和系统时间,精确到秒。
  ($user,$system,$cuser,$csystem)=times;
  在标量上下文中,times返回$user.
  localtime EXPER;
  把一个由time函数返回的时间转换成一个9个元素的列表,同时把时间按照本地时区转换
  典型使用如下:
  ##     0    1   2   3    4    5   6   7   8
  ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
  例如:要取得机器当前时间:
  $time=localtime;
  print $time;
  gmtime EXPR;
  把一个由time函数返回的时间转换成一个8个元素的列表,同时把该时间转换成标准的格林威治时区时间。
  数组函数:
  数组函数列表如下:
  pop         从数组的末尾删除元素          @values=(1,2,8,14);
  $result=pop(@values);#结果是14
  print "@values\n";#1 2 8
  push    从数组的末尾添加元素              @a=qw(a b c d);#@a是abcd
  push@a,e;#@a是abcde
  print "@a\n";
  shift   从数组的开头删除元素              @a=qw(a b c d);#abcd
  shift@a;#bcd  print "@a";
  unshift  从数组的开头添加元素             @a=qw(a b c d);#abcd
  unshift(@a,g)#gabcd  print "@a";
  reverse  把数组倒序                       @values=qw(a b c E d);
  @back=reverse(@values); #print "@back\n";
  sort        按字典方式排序              @values=qw(a b c E d);
  @art=sort@values      #print "@art\n";
  #实现上面同样目地,但是使用了显式的排序函数@art=sort{$a cmp $b}@values;
  #现在是大小写不敏感(忽略大小写)   @art=sort{uc($a) cmp uc($b)}@values;
  #现在是倒排序                      @art=sort{$b cmp $a}@values;
  #按数字递增方式排序              @art=sort{$a  $b}@values;
  #按数字递减方式排序               @art=sort{$b  $a}@values;
  #现在使用内联函数按照值而不是关键字的方式排序哈希表%sr
  %a=(
  "www"=>1,
  "eee"=>2,
  );
  @hx=sort{$a{www}$a{eee}}keys%a;
  print "@hx\n";
  map  是一种道具,可以让你的函数或者表达式,很方便地施用到一系列对象上去。
  语法:map BLOCK LIST
  map EXPR, LIST
  BLOCK是一个用{}包围的代码块。EXPR可以是子函数名、正则表达式等。LIST是输入列表。
  简单地说,map就是起了一个替代foreach循环的作用,map会把数组LIST中的元素挨个取出,放到系统变量$_中,然后调用BLOCK去 处理。值得强调的是,除非有很特殊的理由,不要去修改$_的值,因为修改$_就是直接改了原始数组里的元素!BLOCK  处理过的结果由map返回,仍然是一个数组。
  一个例子:计算一系列文件大小
  my @sizes = map { -s $_ } @filenames;
  在一个例子:将数值转换成字符
  @number=qw(80 101 114 108);
  @characters=map(chr $_, @number); print "@characters\n" 为 Perl
  split 语法:split /PATTERN/,EXPR,LIMIT
  split /PATTERN/,EXPR
  split /PATTERN/
  split
  分割一个字符串成为一个字符串的列表并返回该列表。分隔符是匹配PATTERN的字符串,因此分隔符长度可能大于一。
  一个简单的例子:
  $info="Caine:Michael:Actor:14,Leafy Drive";
  @perlsonal=split(/:/,$info);
  #####@perlsonal=("Caine","Michael","Actor","14,Leafy Drive");
  如果想把列表元素中的前后的空格去掉,可以把中间一行改成:
  @perlsonal=split(/\s*:\s*/,$info);
  缺省情况下,split函数保留开头的空字符串,而删除结尾的空字符串。
  grep  语法:
  grep BLOCK LIST
  grep  EXPR,LIST
  通常的调用方式是使用一个正则表达式,加上一个数组,但并不局限于此。
  对每个传入数组的元素执行BLOCK或EXPR,然后返回由表达式为真的元素组成的数组。在标量上下文,返回表达式为真的次数。
  例如,要排除注释行:
  @bar=qw(s b c #dd d e);
  print "@bar\n";
  @foo=grep(!/^#/,@bar);
  print "@foo\n";
  结果为:s b c #dd d e
  s b c d e
  或等价的:
  @foo=grep{!/^#/}@bar
  注意:可以通过$_访问数组元素,当然也可以通过他修改数组元素,但是修改同时也反映到原数组中去了。
  scalar  返回数组大小。
  @bar=qw(s b c #dd d e);
  print scalar@bar;  #结果为6;
  delete  清除该元素的位置,但不改变各元素的位置。
  @bar=qw(s b c #dd d e);
  delete $bar[3];
  print join(':',@bar);   #结果为s:b:c::d:e
  exists  判断该元素是否已被删除。
  @bar=qw(s b c #dd d e);
  delete $bar[3];
  print join(':',@bar),"\n" unless exists $bar[3];  #结果s:b:c::d:e;如果没有删除就不打印东西了。
  注意:它不同于判断该元素是否undef;
  @bar=qw(s b c #dd d e);
  undef $bar[3];
  print "exists\n" if exists $bar[3];      结果为:exists
  splice  清除该元素的位置。
  @bar=qw(s b c #dd d e);
  splice(@bar,3,1);
  print join(':',@bar),"\n";   #结果为:s:b:c:d:e
  undef 让数组变成空白。
  chop  每一个元素去掉最后一个字符
  @bar=qw(s b c #dd d e);
  chop(@bar);
  print join(':',@bar),"\n"; #结果为::::#d::
  chomp  去掉每一个元素尾部的换行符
  比较数组是否相等:
  use Array:compare;
  @arr1=0..10;
  @arr2=0..10;
  my $compl=Array::Compare->new;
  if($compl->compare(\@arr1,@arr2)){
  print "数组是相等的\n";
  }else{
  print "数组是不同的\n";
  }
  哈希表
  Perl中的哈希表(Hash)用来存储关键字——值对。有的也把它叫做关联数组。哈希表相关的函数列表如下:
  keys        返回一个键值的数组。
  $ranks{aa}=1;
  $ranks{bb}=2;
  @teams=keys(%ranks);
  print "@teams\n";   #结果teams(aa,bb)或(bb,aa)
  values     返回一个值的数组。###用法和上面的一样
  each       返回一个“关键字——值”对。随后的调用返回剩下的“关键字——值”对,可用这个函数来遍历hash。
  $ranks{aa}=1;
  $ranks{bb}=2;
  while(($team,$rank)=each(%ranks)){
  print ("Ranking for $team is $rank\n");
  }#结果为    Ranking for bb is 2
  Ranking for aa is 1
  delete    从hash删除一个“关键字——值”对,返回被删除的元素的值。
  $ranks{aa}=1;
  $ranks{bb}=2;
  $x=delete $ranks{"aa"};#现在%ranks仅剩一个"关键字---值"对了.
  print ("$x\n"); #$x是1
  exists    判断该元素是否已被删除。
  $ranks{aa}=1;
  $ranks{bb}=2;
  print ("存在\n")if exists $ranks{aa}; #打印出"存在"。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-559117-1-1.html 上篇帖子: 查看已经安装的 Perl 模块 下篇帖子: Perl多行注释
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表