use File::Find::Rule; my @file = find( file => name => '*.cc', in => '/clearb/pa/wBcn' ) or die "Find Failed: $!"; foreach (@file) { s/\.cc$/.cpp/; @args = system('/usr/bin/make', '-f', $_); $args == 0 or die "system @args failed: $?"; }