in reply to perl file processing

When processing the filenames, create a hash of array. Each "basename" like TRC_20160309_1 will have an array of extensions associated with it. You did great with test cases, I added a couple more.

You can feed your ls command into this, change <DATA> to just <> in order to read stdin. perl thisprog <yourLScommand

#usr/bin/perl use strict; use warnings; my %fileBaseNames; while (my $fullName = <DATA>) { next if ($fullName =~ /^s*$/); #skip blank lines #separate the full name into name and extension my ($name, $ext) = ($fullName =~ /(\w+)\.(\w+)/); push( @{ $fileBaseNames {$name} }, $ext); } # Each hash key of %fileBaseNames contains an array of the # .extensions found for that name foreach my $baseName (sort keys %fileBaseNames) { my (@extensions) = @{$fileBaseNames{$baseName}}; print "file $baseName has the extensions: @extensions\n"; #code to use that for selective copy goes here... } =EXAMPLE printout file TRC_20160308_1 has the extensions: PDF PL file TRC_20160309_1 has the extensions: ARC PDF ADF file TRC_20160310_1 has the extensions: PDF Process completed successfully =cut __DATA__ TRC_20160309_1.ARC TRC_20160309_1.PDF TRC_20160309_1.ADF TRC_20160308_1.PDF TRC_20160308_1.PL TRC_20160310_1.PDF