求助,工资文本转换

相当精练!!

可名字如果是两个字的呢?



QUOTE:
原帖由 w123456 于 2008-3-9 11:45 发表
相当精练!!

可是 10 楼得到的是我的指点,你得到的只是我的结果,
等下次碰到问题的时候,你又该怎么办?
到时候物价上涨了,只怕就不是 200¥了。


QUOTE:
原帖由 flw 于 2008-3-9 11:52 发表

可是 10 楼得到的是我的指点,你得到的只是我的结果,
等下次碰到问题的时候,你又该怎么办?
到时候物价上涨了,只怕就不是 200¥了。

老大,为什么中文那是 A9 啊? 我还一直以为要用 unicode。
每个中文占3个A? 清赐教。对了,unpack 中的空格应该没有意义吧? 不象pack中
老大,我在win 下试 的是A6
名字如果是两个字的呢?


QUOTE:
原帖由 mouse.rice 于 2008-3-7 15:16 发表
首先感谢flw版主的perl学习指导!透过这个例子的优化,获益匪浅。
#!/usr/bin/perl

use strict;
use warnings;
my ( $id, $name, $salary, $sum );
while () {
    chomp;
    my ( $id, $name, $sala ...

$id, $name, $salary,不是多余的吗?
觉得用unpack 似乎不能根本解决问题


QUOTE:
原帖由 w123456 于 2008-3-11 18:06 发表
觉得用unpack 似乎不能根本解决问题

我倒是觉得用 bbs 似乎不能根本解决问题。还是多看看文档、多学习吧。我们都喜欢爱学习的孩子。
在此非常感谢斑竹flw的鞭笞和mouse.rice 的启发!
考虑到名字有2个字的,所以做了修改,望大家指正。

#!/usr/local/bin/perl   -w   
  
  while (<>){   
  chomp;
    my ( $id, $n_salary ) = unpack( "x4 A19 A*", $_ );

    if($n_salary  =~ /([0-9\.\-]+)/)     
          {   
           $salary  = $1;   
           $salary = 0 if $salary < 0;
         
           print  "$.| $id", " \| " , substr($n_salary, 0, length($n_salary) - length($1) ), " \| ", "$salary ", "\n";   
   
           $sum+=$salary;
          }     
   
  }
print "合计\t|$sum\n";

晕,我们生产机上没有装这个模块