加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Two things need to note for unpack in Perl

发布时间:2020-12-15 21:03:19 所属栏目:大数据 来源:网络整理
导读:In item 116 of the book ?"Effective Perl",author demonstrates how to use?unpack to process ?fix-width? columnar data. I tried to write a toy code for practice,?and found two things need to note. First thing,?MUST use ?single quote ' ?befor

In item 116 of the book ?"Effective Perl",author demonstrates how to use?unpack to process?fix-width?columnar data. I tried to write a toy code for practice,?and found two things need to note.

First thing,?MUST use ?single quote ' ?before and after the format string,?or you'll get unexpected result,?because @xx can be parsed as an array in Perl if enclosed within double quote.

Second thing,?format @xxx makes unpack move to specified position,NOTICE here unpack will work from position xxx+1,not position xxx.


Code is as below.

 
 
my $format = 'A2 @4 A10 @16 A6 @24 A*' ;

my $string = <<'COLUMMNAR';
ID First Name Middle Last Name
1 brian d foy
2 Joshua McAdams
3 Joseph N Hall
COLUMMNAR

open my ( $fh ), '<' , $string ;
my @headers = unpack $format , <$fh> ;
my @names ;
while ( <$fh> ) {
???? my %hash ;
???? @hash { @headers } = $_ ;
???? push @names ,128)">%hash ;
}

use Data::Dumper:: Names ;
print Dumper ( @names );


  • Update:? I should say above format ?of unpack in Perl is very similar with REXX. ?Moreover,REXX is older than Perl,so MAYBE Perl community learned the pattern from REXX.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读