in reply to read copy and moving files

opendir DIR, "DIR_A"; while(defined(my $item = readdir DIR)){ open FILE,"DIR_A/$item" or warn "$!", next; open COPY,"COPIES/$item" or warn "$!", next; while (read FILE,my $buffer,4096){ print COPY $buffer; } close FILE; close COPY; exec("mv","DIR_A/$item","DIR_B/$item"); # performes an mv command +like on the command line } closedir DIR;

rename might do the trick for moving, but as documented in perlfunc, it may not be reliable. File::Copy has a copy and a move command aswell.

-nuffin
zz zZ Z Z #!perl

Replies are listed 'Best First'.
Re: Re: read copy and moving files
by cal (Beadle) on Oct 16, 2002 at 22:02 UTC
    I keep getting 500 Server errors. Premature end of script headers
    #!/usr/local/bin/perl use strict; use diagnostics; my $DIR_A = "/u/web/smpsvc/bulletin"; my $DIR_B = "/u/web/smpsvc/espanol/bulletin"; opendir DIR, "$DIR_A"; while(defined(my $item = readdir DIR)){ open FILE,"$DIR_A/$item" or warn "$!", next; open COPY,"COPIES/$item" or warn "$!", next; while (read FILE,my $buffer,4096){ print COPY $buffer; } close FILE; close COPY; exec("mv","$DIR_A/$item","$DIR_B/$item"); # performes an mv comman +d like on the command line } closedir DIR;
      If you're using it via CGI you'll probably want to use CGI and print HTTP headers using CGI. I think that's your problem.
      use CGI; print CGI->new->header;


      At the top should suffice.
      perldiag points to several sources, stating that this is a CGI error.
      As this is an alien error, use diagnostics could have not explained forther.
      see perldoc perldiag, and search it for "Server error" for more details.

      P.S. You should really use File::Copy, as it's a simpler interface, and platform independant (at least externally, i dunno about it's guts). The code I gave was just to show you how it can be done manually.

      -nuffin
      zz zZ Z Z #!perl
        On a windows 2000 machine you could do it this way.
        #!/usr/bin/perl -w use strict; my $dir = "C:\\TEMP\\"; my $outdir = "C:\\temp2\\"; opendir (DIR, $dir) || die "can't open $dir: $!"; my @files = readdir(DIR); close(DIR); foreach (@files) { # change the extension to one of your liking if ($_ =~ /.log/) { system ("copy $dir\\$_ > $outdir\\$_"); } }