Perl - найти наибольшее значение в файле двумя факторами - PullRequest
0 голосов
/ 17 мая 2018

У меня есть файл, и мне нужно прочитать его в Perl, найти все общее число рождений с моим именем и годом рождения, а затем найти штаты с наибольшим и наименьшим числом рождений для моего имени и года.Я могу сделать первую часть, но я полностью потерян, когда дело доходит до попыток найти самые высокие и самые низкие штаты по годам и DOB.Как мне соответствовать и отслеживать это?Вот код, который у меня есть:

use 5.13.0;
use warnings;
use strict;

my $file;
my $line;
my $count = 0;
my $total;
my $name;
my $year, my $gender;
my $state;

$file = "StateNames.csv";

open( FILE, "$file" );
while ( $line = <FILE> ) {
   if ( $line =~ /Paul,1982/ ) {
      ( $line, $name, $year, $gender, $state, $total ) = split /,/, $line;
      $count = $count + $total;
   }
}

if ( $count == 0 ) {
   print
     "There were no people named Paul found.        Please       try again.";
}

print "The total number of people named Paul born in 1982 is $count";
print $state $total;

Файл

406738 Pilar 1964 F CA 8
406739 Piper 1964 F CA 8
406740 Raelynn 1964 F CA 8
406741 Rafaela 1964 F CA 8
406742 Reba 1964 F CA 8
406743 Risa 1964 F CA 8
406744 Robbi 1964 F CA 8
406745 Rolanda 1964 F CA 8

1 Ответ

0 голосов
/ 21 мая 2018

Вы хотите поместить свои данные в несколько хешей.Это будет начало:

my %parsedInfo;

my @info;
my $i = 1;
while (defined (my $line = <DATA>)) {
    my ($lineNumber, $name, $year, $gender, $state, $total)
        = @info = split /\s+/, $line;
    push @{$parsedInfo{$name}{$year}{$state}}, [@info];
}
foreach my $name (sort keys %parsedInfo) {
    my $yearRef = $parsedInfo{$name};
    foreach my $year (sort {$a <=> $b} keys %$yearRef) {
        my $stateRef = $yearRef->{$year};
        foreach my $state (sort keys %$stateRef) {
            print "$name=>$year=>$state ==========\n";
            for my $infoRef (@{$parsedInfo{$name}{$year}{$state}}) {
                print join(':', @$infoRef), "\n";
            }
        }
    }
}

Вывод выглядит таксостояние, которое содержит данные для этой записи.

Как только вы получите это в соответствующем хеше, вы можете делать все, что захотите.Поместите его в отладчик и пройдитесь по нему для лучшего понимания.Без лучших данных я не смогу сделать намного больше.

Надеюсь, это поможет ... Стив С.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...