use File::Find; find(\&wanted, '/temp_gif'); sub wanted { return unless /^\d+\.gif$/i; (my $new_name = $File::Find::name) =~ s/(\d+)\.gif$/($1+398) . 'GIF'/ei; rename($File::Find::name, $new_name) or die $!; }