#!/usr/bin/perl -w use strict; my @teststr = ( "32977186 4 -rw-r--r-- 1 owner mygrp 65 Aug 4 13:16 /long/path/to/my/file/file1.txt", "32977186 4 -rw-r--r-- 1 owner mygrp 65 Aug 4 13:16 /long/path/to/my/file/file2.txt", "32977186 4 -rw-r--r-- 1 owner mygrp 65 Aug 4 13:16 /long/path/to/my/file/file3.txt", "32977186 4 -rw-r--r-- 1 owner mygrp 65 Aug 4 13:16 /long/path/to/my/file/file4.txt", ); my %testhash = map { m{(([^/]+)\.[^/]+)$}; $2, $1 } @teststr; print "$_ => $testhash{$_}\n" for sort keys %testhash;