#!/usr/bin/perl -w use strict; use Data::Diver 1.01 qw( DiveVal ); my @filenames = ; chomp @filenames; my $files = { }; foreach my $file ( @filenames ) { print "processing file: $file\n"; my @parts= split /[-_.]/, $file; DiveVal( $files, \(@parts) )= 1; } __DATA__ 0001-test-thing.sgi 1.tif 10.tif 2.tif final-0002.tif final-0003.tif final-0004.tif final-0001.tif