免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
论坛 程序设计 Perl split
最近访问板块 发新帖
查看: 1847 | 回复: 7
打印 上一主题 下一主题

split [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-31 09:34 |只看该作者 |倒序浏览
Inter_B.txt的内容:

1|FFFFFFFFFFFFFFFF
2|FFFFFFFFFFFFFFFF


$i_B="Inter_B.txt";
open(FH3, "<$i_B");
while(<FH3>)
{
    if($_ eq "")
   {
         next;
    }
    elsif(/|/)
   {
        chomp;
       @ps=split("|",$_);
       $stn=shift(@ps);
        print $stn."-";
       dut_label=shift(@ps);
       print $dut_label."\n";
   }
   else
  {
   }
}

为什么输出:
1-|
2-|

不是:
1-FFFFFFFFFFFFFFFF
2-FFFFFFFFFFFFFFFF

论坛徽章:
1
未羊
日期:2014-09-08 22:47:27
2 [报告]
发表于 2009-03-31 09:41 |只看该作者
@ps = split /\|/;

这样试试。

论坛徽章:
0
3 [报告]
发表于 2009-03-31 09:46 |只看该作者
三处错误

1.  elsif(/|/)   ->  elsif(/\|/)

2. @ps=split("|",$_);   ->  @ps=split(/\|/,$_);

3. dut_label=shift(@ps);  ->  $dut_label=shift(@ps);


一个建议 没必要用shift 吧    $ps[0]  $ps[1]  直接用不好吗

论坛徽章:
0
4 [报告]
发表于 2009-03-31 10:45 |只看该作者
:wink: if you want to join them ,why you dont try to use "join",

join "-",@ps;

论坛徽章:
0
5 [报告]
发表于 2009-03-31 11:58 |只看该作者

回复 #1 xp20683 的帖子

也可以直接替换

while(<FH3>) {
      s/\|/-/;
      print;
}

论坛徽章:
0
6 [报告]
发表于 2009-03-31 12:48 |只看该作者
我不要替换,我要取出|两边的值

论坛徽章:
0
7 [报告]
发表于 2009-03-31 13:14 |只看该作者

回复 #6 xp20683 的帖子

不要就不要好了

见3楼,很详细

论坛徽章:
0
8 [报告]
发表于 2009-03-31 17:33 |只看该作者
这个程序看起来怎么这么别扭啊。
这样写不是更加清楚吗:
$i_B="Inter_B.txt";
open(FH3, "<$i_B");
while(<FH3>) {
    chomp;
    next if $_ eq "";
    next unless /\|/;
   
    my($stn, $dut_label) = split("|", $_);
    print "$stn-$dut_label\n";
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP