Here's suhailck's basic example using a hash of arrays of hashes to allow for multiple versions of the same file with the same name.
#!perl use strict; use warnings; my %files_by; while (<DATA>) { my ($file_path, $file_name, $version) = m{^(.*/(.*))#(\d+)$}; push @{ $files_by{$file_name} }, { file_path => $file_path, version => $version, }; } for my $file_name (sort keys %files_by) { for my $href (@{ $files_by{$file_name} }) { print "File name: $file_name\n"; print "File path: $href->{file_path}\n"; print "File version: $href->{version}\n"; } } # This prints 6 print $files_by{'modem.c'}[2]{version}, "\n"; # This prints '//depot/asic/tools/perl/files/examples/apps.c' print $files_by{'apps.c'}[0]{file_path}, "\n"; __DATA__ //depot/asic/tools/perl/scripts/examples/modem.c#4 //depot/asic/tools/perl/scripts/examples/modem.c#5 //depot/asic/tools/perl/scripts/examples/modem.c#6 //depot/asic/tools/perl/scripts/examples/modem.c#7 //depot/asic/tools/perl/files/examples/file.txt#2 //depot/asic/tools/perl/proc/examples/apps.c#14
In reply to Re^3: Constructing a hash with filepath,filename and filerev
by Jim
in thread Constructing a hash with filepath,filename and filerev
by perl_mystery
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |