#!/usr/bin/perl sub do_this_dir { local($dir) = @_[0]; local($i, $file, $path); local(@files); if ($verbose eq 'yes' || $really_do_it eq 'no') { print "looking in: $dir\n"; } opendir(DIR, $dir); @files = readdir(DIR); closedir(DIR); loop: foreach $file (@files) { $path = "$dir/$file"; next if $file eq '.' || $file eq '..'; if (-l $path && ! -e $path) { if ($verbose eq 'yes' || $really_do_it eq 'no') { print "dead link: $file\n"; } if ($really_do_it eq 'yes') { unlink($path); } } if (-d $path) { &do_this_dir($path); next loop; } } } sub usage { print "usage: $ARGV[0] [-v] [-n] []\n"; } $starting_dir = ''; $really_do_it = 'yes'; $verbose = 'no'; loop: foreach (@ARGV) { /^-n$/ && do { $really_do_it = 'no'; next loop; }; /^-v$/ && do { $verbose = 'yes'; next loop; }; /^-/ && do { &usage(); exit(1); }; if ($starting_dir eq '') { $starting_dir = $_; } else { &usage(); exit(1); } } if ($starting_dir eq '') { $starting_dir = '.'; } &do_this_dir("$starting_dir");