"Scott R. Godin" wrote:
> 
> Rob Dixon wrote:
> 
> > Hi Scott.
> >
> > Scott R. Godin wrote:
> >> John W. Krahn wrote:
> >>
> >> >     chomp;
> >> >     if ( /(.*)\.BMP/ ) {
> >> >         print "processing image $_ ..\n";
> >> >         system( 'mv', $_, "$1.bmp" ) == 0 or die "system 'mv $_'
> >> > failed: $?";
> >> >         }
> >>
> >> next unless /(.*)\.BMP$/;#anchor it to the end of the string!
> >> print "processing image file: $_\n";
> >>
> >> #rename will clobber existing files, so check first!
> >> warn "File exists!: $1.bmp. skipping...\n" && next
> >>         if -f "$1.bmp";
> >>
> >> # use perl rather than spawning external processes!
> >> rename( $_, "$1.bmp" ) or die "unable to rename file $_: $!";
> >
> > There's a big [SNIP] here from the end of John's post:
> >
> > John W. Krahn wrote:
> >> However, you could write the whole thing in perl and avoid the pipes
> >> and system().
> >>
> >> #!/usr/bin/perl
> >> use warnings;
> >> use strict;
> >> use File::Find;
> >> use File::Copy;
> >>
> >> find( sub {
> >>     return unless -f and /^(.+)\.BMP$/s;
> >>     move( $_, "$1.bmp" ) or warn "Cannot move $_: $!";
> >>     }, '.' );
> >>
> >> __END__
> 
> Yes,. I saw his post after I posted mine.
> 
> However, this still doesn't address the issue of clobbering existing files
> (File::Copy documentation makes no mention of this issue). MY whole issue
> was not using external 'mv' when perl already has 'rename', and the
> possible issue of overwriting files that already exist.

Yes, a valid point.  Adding a line will fix that:

find( sub {
    return unless -f and /^(.+)\.BMP$/s;
    warn "$1.bmp already exists.\n" and return if -e "$1.bmp";
    move( $_, "$1.bmp" ) or warn "Cannot move $_: $!";
    }, '.' );


:-)

John
-- 
use Perl;
program
fulfillment

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to