0

いくつかのキーを持つハッシュがあり、各キーには 20 個の値があります。

%test={
a=> 10 14 34 56 ....
b=> 56 67 89 66 ...
..
}

@values= {a,b,..}

以下に示すように、このハッシュの値を別のファイルに関連付けたい

私の入力ファイル.txt

ID
ID
ID
...

予想される file.txt

ID ,10 ,56
ID ,14, 67
ID ,34, 89
ID ,56, 66
..

私のコードは現在、すべての値をファイルの最初の行に関連付けています。フォーマットを手伝ってください。

my $match = "ID";

tie my @lines, 'Tie::File', 'file.txt' or die "failed : $!";

for my $line (@lines) {

    while ( $line =~ /^($match.*)/ ) {
        $line = $1 . "," . join ',',@test{@values};
    }
}
untie @lines;

今私の出力は

file.txt
ID ,10 ,14, 34, 56,... 56, 67, 89, 66....
ID 
ID 
ID 
4

3 に答える 3

0

ネクタイは私には不必要に思えますが、これが私の見解です。

use strict;
use warnings;
use Tie::File;
my %test=(
    a=> [qw(10 14 34 56)],
    b=> [qw(56 67 89 66)]
);
my @values= qw(a b);
my $match = "ID";
tie my @lines, 'Tie::File', 'file.txt' or die "failed : $!";
my $i = 0;
for my $line (@lines) {
    if ( $line =~ /^($match.*)/ ) {
       $line = $1 . "," . join(',', map { $test{$_}->[$i]} @values );
       $i++;
    }
}
untie @lines;

出力 (file.txt):

ID,10,56
ID,14,67
ID,34,89
ID,56,66
于 2013-06-04T00:10:20.780 に答える