cal has asked for the wisdom of the Perl Monks concerning the following question:

Hello, I have several image files(.gif) located in a DIRECTORY(DIR_A) that I want to read,copy and then move to another DIRECTORY(DIR_B). Is this possible ? If it is could you please show me an example. Thank you much, Cal

Replies are listed 'Best First'.
Re: read copy and moving files
by runrig (Abbot) on Oct 16, 2002 at 21:03 UTC
Re: read copy and moving files
by nothingmuch (Priest) on Oct 16, 2002 at 21:04 UTC
    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
      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