#!/usr/bin/perl use File::Find; use File::Copy; sub FindData { my $fulldir = $File::Find::dir; my $filename = $File::Find::name; ... open( IN, "<$filename" ) || die "cannot find $filename \n"; .... close IN; if ($olddir ne $newname) { move( "$basedir/$olddir", "$basedir/$newname" ); } } } finddepth( {wanted=>\&FindData,no_chdir}, @path );