sub { my $var = shift; if ($var =~ /^((\d{4})\d{3})$/) { my ($filenumber, $subdir) = ($1, $2); my ($success, $message) = $self->_movefiles( "$var", "\\\\servername\\share\\Dept\\Search\\Scans\\$subdir\\$filenumber"); unless ( $success == 1 ) { $self->_error( 'Error: Scanfiler directory moving problem', qq|There was an error moving file "$subdir/$filenumber. The error was $message"|, 0); return; } $self->_error("ScanFiler Moved search file $filenumber", "ScanFiler Moved search file $filenumber to subfolder $subdir\\$filenumber \n" . "Success = $success and \$! = $message\n", 1); } } sub _movefiles { my ($self, $pathfrom, $pathto) = @_; my $tifpath = ''; my $fileto = ''; $dir = (new DirHandle $pathfrom) or die "$! at $pathfrom\n"; mkpath($pathto,1,); while (defined(my $filename = $dir->read)) { next if $filename =~ /^\.{1,2}$/; if ($filename =~ /\.tif$/i) { if (-e "$pathto/$filename") { my ($prefix,$digit) = ($filename =~ /(\d+_\d+_)(\d+)\.tif/); while (-e "$pathto/$prefix$digit.tif") { ++$digit } $fileto = $tifpath = "$prefix$digit.tif"; } else { $fileto = $tifpath = $filename; } } else { $fileto = $filename; } my $time = time() - $offset - (stat("$pathfrom/$filename"))[9]; next if $time < 30; unless ( copy("$pathfrom/$filename", "$pathto/$fileto") == 1 ) { return ( 0, $!); } if (compare("$pathfrom/$filename", "$pathto/$fileto") == 0) { unlink "$pathfrom/$filename" } } $dir->close; return (rmdir("$pathfrom"), $tifpath); }