В прошлом мне приходилось обрабатывать данные в электронных таблицах.Если вы имеете дело с небольшим количеством файлов Excel, экспортируйте их вручную в файлы CSV с помощью программного обеспечения для работы с электронными таблицами, такого как Excel.Затем проанализируйте файл CSV и сохраните значения ячеек в хэш хэшей в perl:
#!/usr/bin/env perl
use warnings;
use strict;
use Data::Dumper::Simple;
my $file = "";
my @row = ();
my $rowidx = 1;
my %hh = (); # hash of hashes
open( INFILE, "input.csv" ) or die("Can not open input file: $!");
while ( $file = <INFILE> ) {
@row = parse($file);
chomp(@row);
$hh{ $row[2] }{ $row[1] } = $row[0];
#warn Dumper %hh; # debug
$rowidx++;
}
close(INFILE);
warn Dumper %hh;
exit;
sub parse {
my @newrow = ();
my $columns = shift; # read next row
push( @newrow, $+ ) while $columns =~ m{"([^\"\\]*(?:\\.[^\"\\]*)*)",?|([^,]+),?|,}gx; # parse and store columns to array
push( @newrow, undef ) if substr( $columns, -1, 1 ) eq ',';
return @newrow;
}
Выполнение этого дает
$ more input.csv
12,A,P1
23,B,P5
24,C,P2
15,D,P1
06,E,P5
$ ./ReadCSV.pl input.csv
%hh = (
'P5' => {
'E' => '06',
'B' => '23'
},
'P2' => {
'C' => '24'
},
'P1' => {
'A' => '12',
'D' => '15'
}
);