http://qs1969.pair.com?node_id=204143


in reply to Counting lines by content

I would use hashes of hashes and then count the number of entries. This is just a simple flat-file to tree generation question, akin to flatfile-to-xml constructor.

#!/usr/bin/perl print "Hello, World...\n"; use strict; use Data::Dumper; my @in = qw/ fruit:apple:cox fruit:apple:pippin fruit:apple:granny fruit:banana:yellow fruit:banana:green /; #make an anonymous hash my $h = {}; foreach (@in) { my @a = split ':',$_; my $branch = shift @a; my $species = shift @a; my $breed = shift @a; $h->{$branch}->{$species}->{$breed} = $h->{$branch}->{$species}->{ +$breed} + 1 || 1; } print Dumper($h); print "there are ".scalar (keys %{$h->{fruit}})." fruit species\n"; print "there are ".scalar (keys %{$h->{fruit}->{apple}})." apple breed +s\n"; print "there are ".scalar (keys %{$h->{fruit}->{banana}})." banana bre +eds\n"; print "Good luck with your homework\n";
Returns:
C:\>perl test.pl Hello, World... $VAR1 = { 'fruit' => { 'apple' => { 'pippin' => 1, 'cox' => 1, 'granny' => 1 }, 'banana' => { 'green' => 1, 'yellow' => 1 } } }; there are 2 fruit species there are 3 apple breeds there are 2 banana breeds Good luck with your homework

hackmare.