1

同じ要素を持つ複数の行を、別の要素を持つ次の行に到達するまで、1 つの配列またはハッシュに読み込みたい場合。これらの要素は既に並べ替えられているため、隣同士の行に表示されます。例えば:

1_1111  1234
1_1111  2234 
1_1111  3234
1_1112  4234
1_1112  5234
1_1112  6234
1_1112  7234
1_1113  8234
1_1113  9234

同じ要素 1_1111 を持つ最初の 3 行を 1 つの配列に読み取り、それを処理してから、同じ要素 1_1112 を持つ次の数行を読み取りたい

4

2 に答える 2

1
my $key;
my @nums;
while (<>) {
   my @fields = split;
   if (@nums && $fields[0] ne $key) {
      process($key, @nums);
      @nums = ();
   }

   $key = $fields[0];
   push @nums, $fields[1];
}

process($key, @nums) if @nums;
于 2013-09-18T04:28:38.683 に答える
0

ファイルを配列のハッシュに読み込むことができます。

#!/usr/bin/perl

use strict;
use warnings;

my %hash;
while (<DATA>) {
    my ($key, $value) = split /\s+/;
    push @{ $hash{$key} }, $value;
}

__DATA__
1_1111  1234
1_1111  2234
1_1111  3234
1_1112  4234
1_1112  5234
1_1112  6234
1_1112  7234
1_1113  8234
1_1113  9234

ハッシュのキーは左の列の数値に対応し、値は右の列の数値の配列です。これで、ハッシュを反復処理して、必要に応じて処理できます。

于 2013-09-18T04:33:46.970 に答える