#!/usr/bin/perl -w use strict; use File::Basename; use Data::Dumper; my %versions; while () { chomp(); next if /^\s*$/; #skip blank lines my ($path, $version) = split('#', $_); push (@{$versions{$path}}, $version); } foreach my $path (sort { my $afile = basename($a); #sort by file name my $bfile = basename($b); $afile cmp $bfile } keys %versions ) { my $file = basename($path); printf "$file \tversions: @{$versions{$path}}\t$path\n"; } =prints apps.c versions: 14 18 //depot/asic/tools/perl/proc/examples/apps.c file.txt versions: 2 //depot/asic/tools/perl/files/examples/file.txt modem.c versions: 4 5 6 7 //depot/asic/tools/perl/scripts/examples/modem.c modem.c versions: 6 //depot/asic/tools/perl/proc/examples/modem.c =cut __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 //depot/asic/tools/perl/proc/examples/apps.c#18 //depot/asic/tools/perl/proc/examples/modem.c#6