use 5.010; use strict; use warnings; use Getopt::Long qw( :config no_ignore_case ); use Path::Class::Rule; GetOptions( 'help|h' => sub { help(0) }, 'suffix=s' => \(my $suffix = ''), 'age=i' => \(my $age = 0), 'count' => \(my $count = 0), ); @ARGV or help(1); my @matches = "Path::Class::Rule" -> new -> file -> name(qr{\.$suffix$}) -> modified(">$age") -> all(@ARGV); if ($count) { say "count: ", scalar @matches; } else { say for @matches; } sub help { print <<"USAGE"; exit($_[0]); $0 --suffix=SUFFIX --age=DAYS DIR [DIR ...] $0 --suffix=SUFFIX --age=DAYS --count DIR [DIR ...] USAGE }