#!/usr/bin/perl use strict; use warnings; use File::Find; use File::stat; use DateTime; use Time::localtime; use Data::Dumper; my %old_file; my ( $dt1, $dt2 ); my ( $tm, $dur, $st); $dt1 = new DateTime( year => 2006, month => 1, day => 1 ); find( \&wanted, '/home/user' ); sub wanted { if ( /[.] pl \z/x ) { $st = stat( $File::Find::name ) or die "No file: $!"; $tm = localtime( $st->mtime ); $dt2 = new DateTime( year => $tm->year + 1900, month => $tm->mon + 1, day => $tm->mday ); $dur = $dt1->subtract_datetime($dt2); $old_file{$_} = $dt2->ymd if $dur->is_positive; } } print Dumper( \%old_file );