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

[经验分享] perl中数组函数详解:join和split和splice

[复制链接]
累计签到:5 天
连续签到:1 天
发表于 2018-9-1 06:41:12 | 显示全部楼层 |阅读模式
在perl中,join()和split()的功能是相反的。  一.join函数
  1.作用:把数组元素或者几个字符串通过分隔符连接成单个字符串
  2.格式:join(DELIMITER,ARRAY或string[1,2,3...])
  3.实例:#join
  $name="Tom";
  $birth="01/02/86";
  $addr="chengdu.sichuan";
  $info=join(":",$name,$birth,$addr);
  print "1.$info"."\n";
  @list=("Tom","Joe","Tonny","chris");
  @array=join("\n",@list);
  $str=join("-",@list);
  print "2.$str\n";
  print "3.@array";
  4.结果:
  1.Tom:01/02/86:chengdu.sichuan
  2.Tom-Joe-Tonny-chris
  3.Tom
  Joe
  Tonny
  chris
  二、split函数
  1.作用:与上面的join函数功能恰好相反,是通过指定的分隔符把字符串分割成一个一个的字段,形成一个数组返回
  2.格式:split(DELIMITER,STRING);
         split(DELIMITER,STRING,LIMIT);     
         split(DELIMITER);
  3.1.实例:#split(DELIMITER,STRING);
    $char="a/b/c/d/e/f";
    @letters=split("/",$char);
    print "1.@letters\n";
  3.2.输出结果:
   1.a b c d e f
  4.1实例:#split(DELIMITER);
    while(){
       @ch=split(":");
       print "$ch[1]\n";
    }
  __DATA__
  a:2:3:5
  2:s:f:s
  e:r:t:y
  4.2输出结果:
  2
  s
  r
  5.1实例:#split(DELIMITER,STRING,LIMIT);     
    $string="Tom Joe Tonny chris";
    @names=split(" ",$string,2);
    print "1.$names[0]\n";
    print "2.$names[1]\n";
    print "3.$names[2]\n";
  5.2输出结果:
  1.Tom
  2.Joe Tonny chris
  3.
  6总结:
  (1)在第三种格式中,LIMIT是用来指定需要拆分的字段数目。若LIMIT的值小雨STRING中的字段数,则拆分后最后一个数组元素将包含所以剩余的。
  (2)在第二种格式中,使用的变量其实是默认的$_
splice  splice函数有三个作用。第一个作用是向数组中间的一部分插入内容。例如:
  @d=(1..9);
  my @e=("a".."f");
  splice(@d,2,2,@e); #目标数组, 插入起始位置, 覆盖长度, 插入数组
  将会得到12abcdef56789,注意这里是从第二个开始插入,不是从下标为2的元素开始插入的。
  splice的第二个功能是删除,例如在刚才的代码上面再加上:
  splice(@d,2,6); #目标数组, 起始位置,删除长度
  将可以得到1256789;
  splice的第三个功能就是删除到末尾。语法为:
  splice(@d,2);
  就是从第二个开始,删除到末尾。
  
  我们还应该有一个可以把整个数组合并成一个标量的函数。这个函数就是join,join有两个参数,第一个参数是合并时放在元素之间的分割符,第二个是进行操作的数组。 例如:
  my @g=(1,2,3);
  join(" ",@g);
  将可以得到“1 2 3”.
  undef(@a); # 作用是把@a的内容清空。
  chop(@a); #作用是把数组内每个元素的末尾去一个字符。
  chomp(@a); #作用则是把数组内的每一个元素的末尾的换行符去掉。
  


运维网声明 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-560246-1-1.html 上篇帖子: perl sort <=> and cmp 下篇帖子: Ubuntu Server最佳方案——LAMP服务器之Perl篇
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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