If you insist on using a Hash of Hashes (HoH) so that you get "
$info{}{}{} method", then this is one possibility. HoH is sometimes awkward because to print it, you need a loop for each level as shown.
use strict;
use warnings;
my %info;
while (<DATA>)
{
chomp;
my ($name,$fruit, $path) = split ' ',$_,3; # allow space in path n
+ame(s)
$info{$name}{$fruit}=$path;
}
foreach my $name (sort keys %info)
{
print "$name\n";
foreach my $fruit (sort keys %{$info{$name}} )
{
print " $fruit \t$info{$name}{$fruit}\n";
}
}
=PRINTS:
Albert
apple /path/to/somewhere/a
Dex
jackfruit /path/to/some where/d
Jack
apple /path/to/somewhere/c
pineapple /path/to/some where/b
=cut
__DATA__
Albert apple /path/to/somewhere/a
Jack pineapple /path/to/some where/b
Jack apple /path/to/somewhere/c
Dex jackfruit /path/to/some where/d