作者frank1983 (What?)
看板Perl
标题Re: [问题] 用阵列处理 资料的行列转换
时间Fri Mar 27 02:07:59 2009
※ 引述《toolate (我是87一个)》之铭言:
: 我有一个档案
: 内容大约像
: I1 I2 I3 I4 ......I100
: +1.1 1.2 1.3 1.4 ...... 5
: +1.11 1.12 1.13 1.145 ...... 9
: +1.05 1.043 1.20 ...... 10
: 我想把他改成
: I1 => 1.1
: I2 => 1.2
: ....
: I100 => 5
: I1 => 1.11
: I2 => 1.12
: .....
: I100 => 9
: I1 =>1.05
: I2 => 1.043
: ...
: I100 =>10
: 我目前的做法是
: 先将整个存取成@outline
: $data = shift @outline;
: @row1 = split (/[,\s]+,$data);
: 这个将I1~I100 先取出来 然後後面的值再分开处理
: $data1 = shift @outline;
: @row2 = split (/[,\s]+,$data1);
: while ($idx) {
: my $output ="@row1[$idx] => @row2[$idx] \n";
: ++$idx; }
: 但到了第三笔资料时 想用变数将 @row2 改为@row{$N} 这样子就语法出错了
: 这样想法有错吗 还是有更简单的方法 来做这种转换
依照你的想法
应该可以这样写
my @vars = split /[,\s]+/, shift @outline;
for my $line (@outline) {
my @vals = map { split /[,\s]+/, substr $_, 1 } $line;
print "$vars[$_] => $vals[$_] \n" for 0 .. $#vals;
print "\n"
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.230.108