I haben eine Funktion, die extrahiert Excel Daten in ein Array von Hashes etwa so:Suche nach hash in einem Array von Wert
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;
}
}
das Array von Hashes Bestücken fein ist. Der schwierige Teil ist jedoch die Suche nach einem bestimmten Element (Hash) im Array. Ich kann nicht scheinen, um Artikel zu finden, die eine ID oder 21, oder eine Charge von 15, oder eine Kosten> $ 20 etc. haben können.
Wie würde ich über die Einrichtung einer solchen Sucheinrichtung gehen?
Vielen Dank an alle,
Sie könnten einfach einen anonymen Hash Ref Push (@array, {id => $ id}); –
Während Sie nicht direkt auf Ihre Frage bezogen sind, sollten Sie Text :: xSV zum Analysieren der CSV-Datei betrachten. Nur ein Split auf "," ist nicht 100% zuverlässig für das Parsen. Es gibt auch ein Spreadsheet :: ParseExcel-Modul, das Excel-Binärdateien parsen kann. – jiggy