#!/usr/local/bin/perl -w use strict; use File::Copy; use File::Basename; sub illegalFile { my $dir=shift; #look for dangerous file name #for my $FN ( glob( '$dir/*"[ |\~|\?|\<|\>|\,|\`|\!|\@|\#|\%|\^|\&|\*|\||\(|\)|\;|\+|\=|\{|\}|\\|\[|\]|\-]"*' )) { #for my $FN ( glob( "$dir/*[ \~\?\<\>\,\`\!\@\#\%\^\&\*\|\(\)\;\+\=\{\}\\\[\]\-]*" )) { my $pat = $dir . "/" . quotemeta ("*[ ~?<>,`!@#%^&*|();+={}\[]-"); for my $FN ( glob $pat ) { print "$0 : ILLEGAL FILE NAME in $dir [$FN]\n"; my $PATH_HAVING_ILLEGAL_FILE=dirname $dir; my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); my $DIR_HAVING_ILLEGAL_FILE="$PATH_HAVING_ILLEGAL_FILE/ILLEGAL_FILE_NAME_" . $year . "_" . $mon . "_" . $mday . "_" . $hour . "_" . $min . "_" . $sec; mkdir $DIR_HAVING_ILLEGAL_FILE; move( $dir, $DIR_HAVING_ILLEGAL_FILE ); mkdir $dir; mailError ("illegal file name detected!"); exit 1; } ### END look for dangerous file name } my $dir = shift; if ( !$dir ) { die "usage : $0 \n"; } illegalFile ($dir);