#!/usr/bin/perl -w our $exts = { h => 1, c => 1, xs => 1, pl => 1, pm => 1, pod => 1, ppd => 1, ppm => 1, mak => 1, nff => 1, yml => 1, arb => 1, cg => 1, glsl => 1, txt => 1 }; my($path) = @ARGV; die qq { USAGE: cleanup.pl FILE_PATH | DIRECTORY } if (!$path); clean_path($path); exit 0; sub clean_path { my($dir) = @_; if (!-d $dir) { clean_file($dir); return; } return if (!opendir(DIR,$dir)); foreach my $file (readdir(DIR)) { next if ($file =~ m|^\.|); my $path = "$dir/$file"; clean_path($path); } closedir(DIR); } sub clean_file { my($path) = @_; if ($path =~ m|~$|) { unlink($path); return; } if ($path =~ m|\.([^/\.]+)$|) { my $ext = lc($1); return if (!$exts->{$ext} && $path !~ m|Makefile$| && $path !~ m|readme\.$ext|i); } if (!open(FILE,$path)) { print "Unable to read '$path'\n"; return; } my @data = ; close(FILE); my $data; foreach my $line (@data) { $line =~ s|[\n\r]+||gs; $data .= "$line\n"; } die "Unable to write to $path\n" if (!open(FILE,">$path")); print FILE $data; close(FILE); print "Cleaned '$path'\n"; }