Ho una funzione che estrae i dati di Excel in un array di hash in questo modo:Cerca hash in una matrice per valore
sub set_exceldata {
my $excel_file_or = '.\Excel\ORDERS.csv';
if (-e $excel_file_or) {
open (EXCEL_OR, $excel_file_or) || die("\n can't open $excel_file_or: $!\n");
while() {
chomp;
my ($id, $date, $product, $batchid, $address, $cost) = split ",";
my %a = (id => $id
, date => $date
, product => $product
, batchid => $batchid
, address => $address
, cost => $cost
);
push (@array_data_or, \%a);
}
close EXCEL_OR;
}
}
Compilazione l'array di hash è bene. Tuttavia, la parte difficile è la ricerca di un particolare oggetto (hash) nell'array. Non riesco a trovare articoli che potrebbero avere un ID o 21, o un batchid di 15, o un costo> $ 20 ecc.
Come potrei fare per implementare tale funzione di ricerca?
Grazie a tutti,
Si potrebbe semplicemente spingere un hash ref push anonimo (@array, {id => $ id}); –
Anche se non sono direttamente correlati alla tua domanda, dovresti guardare Text :: xSV per analizzare il file .csv. Solo fare una divisione su "," non è affidabile al 100% per l'analisi. C'è anche un modulo Spreadsheet :: ParseExcel in grado di analizzare i binari di Excel. – jiggy