+ -
当前位置:首页 → 问答吧 → perl 字符分割问题

perl 字符分割问题

时间:2010-12-06

来源:互联网

  1. #!/usr/bin/perl -w
  2. use strict;

  3. my $MYOFFICE_LIST = "192.168.100.113|D:\\Myoffice,192.168.100.113|E:\\Myoffice";

  4. my (@A) = split /,/ => $MYOFFICE_LIST;
  5. my (@ip,@path) = split /|/ => @A;

  6. foreach my $i (@ip){
  7.         print $i,"\n";
  8. }
复制代码


如何将IP分割到@ip ,路径分割到@path   我这样分割结果变成了2.  高手麻烦帮改改

作者: mitmax   发布时间: 2010-12-06

用正则啊,据说比split效率还高~

作者: x9x9   发布时间: 2010-12-06

  1. #!/usr/bin/perl -w
  2. use strict;

  3. my $MYOFFICE_LIST = "192.168.100.113|D:\\Myoffice,192.168.100.113|E:\\Myoffice";

  4. my @a = split /,/,$MYOFFICE_LIST;

  5. foreach my $m (@a)
  6. {
  7.   my ($ip,$path)=split /\|/,$m;
  8.   print "$ip,$path\n";
  9. }
复制代码
这样可以的,你试试

作者: scrit   发布时间: 2010-12-06

本帖最后由 wfnh 于 2010-12-06 16:57 编辑

split是分割字符村的···不是分割数组的···
你可以用下面代替
  1. my @ip = map{(split /\|/)[0]} split /,/ => $MYOFFICE_LIST;
复制代码
当然,可以用一条正则搞定

作者: wfnh   发布时间: 2010-12-06



QUOTE:
split是分割字符村的···不是分割数组的···
你可以用下面代替当然,可以用一条正则搞定
wfnh 发表于 2010-12-06 16:55




    好方法,我以前没用过map ,不了解怎么用

作者: scrit   发布时间: 2010-12-06

其实split还可以这样用···
ps:正则随便的
  1. my (@ip,@path);
  2. /\d+/ ? push @ip,$_ : push @path,$_ for (split /[,|]/ => $MYOFFICE_LIST);
复制代码

作者: wfnh   发布时间: 2010-12-06

学习了学习了。。。我自己写的要9行。。。。嘿嘿,我学习的积极性很高滴,有没有师傅带啊?

作者: homedw   发布时间: 2010-12-06