如何匹配以提取出如下内容?

如何匹配以提取出如下内容?

源文件-

200709    100188888888        固定电话    110    呼出限制功能费
小计 : 费用:5.00元 次数:5 时长:30
200709    100188556698        固定电话    114    呼出限制功能费
小计 : 费用:1.00元 次数:2 时长:10

希望提取出如下内容:
110  费用:5.00元
114  费用:1.00元

open('FIN', '<', 'input.txt') || die "Oops: $!\n";

while (my $line = <FIN>) {
    my $money = (split(/\s+/, $line))[3];
    $line = <FIN>;
    $line =~ /(费用.*元)/;
    print "$money $1\n";
}
老大,结合您的CODE,看看我的郁闷思路,我是这样理解的:

QUOTE:
#!/usr/bin/perl -w
open('FIN', '<', '/home/test') || die "Oops: $!\n";
while (my $line = <FIN>) {
    my $money = (split(/\s+/, $line))[3];#这里不仅取出"110,114",同时也取出了“次数:.."项。
    $line=~/(费用.*元)/;
    print "$money $1\n";
}

运行结果显然不是我所需要的!
1.我不理解为什么您在while{}中加了一条$line=<FIN>;后就可以屏蔽掉“次数:...”那个$[3]?
2.还没有见识过my $money = (split(/\s+/, $line))[3];这种写法,老大帮讲解下,谢谢您!
3.不理解您这个CODE怎么能直接匹配中文编码?我怎么用正则无法匹配中文阿?
谢谢指教!

关于1:其实每次while循环都会读入两行数据,取次数的时候用到了regx的匹配变量,所以才有后面的$1
关于2:(split(/\s+/, $line)) 生成了一个匿名数组
关于3:具体我也不清楚了

以上,还是多看看书吧!
楼上的老大没有理解我的提问,呵呵。关于1,我关注的是$monkey的结果。


QUOTE:
原帖由 windows.li 于 2007-11-6 16:58 发表
楼上的老大没有理解我的提问,呵呵。关于1,我关注的是$monkey的结果。

你运行结果是什么


[Copy to clipboard] [ - ]
CODE:
while (my $line = <FIN>) {                                200709    100188888888        固定电话    110    呼出限制功能费                  
    my $money = (split(/\s+/, $line))[3];             110               
    $line = <FIN>;                                               小计 : 费用:5.00元 次数:5 时长:30
    $line =~ /(费用.*元)/;                                      费用:5.00元                                    
    print "$money $1\n";                                     110  费用:5.00元
}

以上以一组数据作为例子,至于为什么,自己可以想想
测试通过,鉴定完毕。
老大的CODE是没有问题的.
我的思路究竟哪里出了问题?就少了一句$line=<FIN>;结果就变了.请指教.
#!/usr/bin/perl -w
open('FIN', '<', '/home/test') || die "Oops: $!\n";
while (my $line = <FIN>) {
    my $money = (split(/\s+/, $line))[3];
    print "$money\n";
}
运行结果:
110
次数:5
114
次数:2

那么:
#!/usr/bin/perl -w
open('FIN', '<', 'home/test') || die "Oops: $!\n";
while (my $line = <FIN>) {
    my $money = (split(/\s+/, $line))[3];
    $line = <FIN>;
    $line =~ /(费用.*元)/;
    print "$money $1\n";
}
运行结果:
110 费用:5.00元
114 费用:1.00元
#看看上面那个程序中$money的结果不是还有“次数:*”项么?在这个程序中怎么没有该项阿,如何屏蔽掉该项的?
请赐教!