&recurse_dir("/cdw/home_dir/s006258/CSPAM"); sub recurse_dir { my ($dir) = @_; opendir(DIR, "$dir") or die "Unable to open $workdir:$!\n"; my @names = readdir(DIR) or die "Unable to read $workdir:$!\n"; foreach my $name (@names) { if (-d $name){ print "$name is a dir\n"; if ($name eq "." || $name eq ".." || $name eq "lost") { next; } else{ recurse_dir($name); } } else { if (-f $name){ #print "$name is a file\n"; if ($name =~ /\.sas/) { system("chmod 644 $name"); print "$name has been changed\n"; } } } } }