Je vais essayer d'illustrer ceci avec un exemple. Prenons un exemple commun d'un hachage de hachages:Comment créer et ajouter des hachages anonymes à un hachage connu pendant l'exécution du script?
my %HoH = (
flintstones => {
lead => "fred",
pal => "barney",
},
jetsons => {
lead => "george",
wife => "jane",
"his boy" => "elroy",
},
simpsons => {
lead => "homer",
wife => "marge",
kid => "bart",
},
);
Pour mes fins, je voudrais être en mesure d'ajouter un hash sans nom, ou anonymes% HOH. Je n'aurai pas besoin (ou pouvoir) de définir ces sous-hachages avant l'exécution. Comment puis-je accomplir cela avec Perl? Tout ce que j'ai lu (et j'ai déjà lu via Perldocs et Google) semble montrer des exemples où tous les sous-hachages (par exemple "flintstones", "jetsons" et "simpsons") sont définis.
Ce que je suis en train de faire est d'essayer de construire une table de hachage parent qui contiendra des sous-hash avec les lignes d'un fichier CSV:
%TopHash = (
%Line1 => {
cell01 => $some_value1a;
cell02 => $some_value2a;
cell03 => $some_value3a;
},
%Line2 => {
cell01 => $some_value1b;
cell02 => $some_value2b;
cell03 => $some_value3b;
},
%Line3 => {
cell01 => $some_value1c;
cell02 => $some_value2c;
cell03 => $some_value3c;
},
# etc
# etc
# etc
);
Le nombre de « % LineX » hash que j'ai besoin ne sait pas jusqu'à l'exécution (car ils représentent le nombre de lignes dans un fichier CSV lu lors de l'exécution).
Des idées? Si ce n'est pas déjà clair ... j'essaie toujours d'envelopper ma tête autour des hachages Perl.
BTW, êtes-vous sûr que vous voulez utiliser un HoH pour cette structure? Puisque vous êtes en train d'analyser les fichiers CSV, il semble que le hachage des tableaux soit plus approprié. En général, si vous vous trouvez en train de coller des numéros séquentiels à la fin d'une clé de hachage ou d'un nom de variable, vous devriez probablement utiliser un tableau. – friedo
Mon objectif final est d'obtenir une liste de lignes avec des données uniques (comme déterminé par une combinaison de 3 cellules dans une rangée); Cependant, j'ai besoin de toutes les cellules des rangées uniques. Peut-être qu'un tableau de hachages serait mieux adapté à cette tâche? – Mick
Vous avez déjà beaucoup de réponses, mais je n'ai vu personne vous pointer vers le livre de recettes Data Structures (perldoc perldsc) http://perldoc.perl.org/perldsc.html Il contient beaucoup d'exemples pour travailler avec structures de données complexes. Bien sûr, vous l'avez peut-être déjà vu depuis que vous avez lu un peu de perldoc. – daotoad