1 -7 8,2 8,1
1 -5 8,4 8
1 -3 8,5 8,2
2 -6 8,4 8,2
3 -5 8,4 8,2
3 -4 8,4 8,3
5 -1 8,5 8,3
5 1 8,4 8,6
我需要: 1 0 0 0 0 -7 8,2 8,1 当在第一列中例如是1时,out是1 0 0 0 0。如果2 out是0 1 0 0 0。如果3:0 0 1 0 0。如果4:0 0 0 1 0。如果5:0 0 0 0 1并继续下一列的数据。 感谢。
答案 0 :(得分:1)
use strict;
use warnings;
while (<DATA>) {
my @fields = split;
my $i = shift @fields;
my @bools = (0) x 5;
$bools[$i-1] = 1;
unshift @fields, @bools;
print join(' ', @fields), "\n";
}
__DATA__
1 -7 8,2 8,1
1 -5 8,4 8
1 -3 8,5 8,2
2 -6 8,4 8,2
3 -5 8,4 8,2
3 -4 8,4 8,3
5 -1 8,5 8,3
5 1 8,4 8,6
输出:
1 0 0 0 0 -7 8,2 8,1
1 0 0 0 0 -5 8,4 8
1 0 0 0 0 -3 8,5 8,2
0 1 0 0 0 -6 8,4 8,2
0 0 1 0 0 -5 8,4 8,2
0 0 1 0 0 -4 8,4 8,3
0 0 0 0 1 -1 8,5 8,3
0 0 0 0 1 1 8,4 8,6