Re: Is this script safe?



Dermot Paikkos wrote:
> Hi,
>
> I wanted a script that would rename files from lower to upper case. I
> have something but I am a bit worried about going live with it as I
> can imagine there is plenty of room for error and I really don't want
> to knacker my filesystem.
>
> Could I get any comments of suggestion on what I have. I want
> something safe/secure.
>
> I am not sure about what would happen if it was passed more than one
> argument. Should I allow more than one argument?
>
> Are the any gotcha's to watch out for?
> Thanx,
> Dp.
>
>
> =============== upper.pl===============
>
> #!/usr/bin/perl -Tw
> # upper.pl
>
> # Upper case all lowercase file in a given directory.
>
>
> use File::Copy;
> use strict;
>
> my $dir = shift;
> my $found = 0;
>
> opendir(DIR,$dir) or die "Can't open $dir: $!\n";
> foreach my $name (sort grep !/^\./, readdir DIR) { # Credit Randal L.
> Schwartz
> if ($name =~ /[a-z]/) { # Look for lc file. Wot about
> files
> # with numbers??
>
> ++$found;
> if ($dir !~ /\/$/) { # Add a slash if there is'nt
> one
> $dir = "$dir"."/";
> }
> (my $new = $name) =~ tr/[a-z]/[A-Z]/; # trans the
> name
> $name = "$dir"."$name";
> $new = "$dir"."$new";
> #mv("$name","$new") or die "Can't upper $name: $!\n";
> print "$name -> $new\n";
> }
>
> }
> print "Found $found lowercase files\n"

You probably want something like this:

opendir DIR $dir or die "Can't open $dir: $!\n";

for my $name ( readdir DIR ) {
my $new = uc $name;
next if $new eq $name;
next if -e "$dir/$new";
mv "$dir/$name", "$dir/$new" or die "Can't rename $dir/$name: $!\n";
++$found;
}



John
--
use Perl;
program
fulfillment
.



Relevant Pages

  • Re: Is this script safe?
    ... > I wanted a script that would rename files from lower to upper case. ... > # Upper case all lowercase file in a given directory. ...
    (perl.beginners)
  • RE: Is this script safe?
    ... > Subject: Is this script safe? ... > I wanted a script that would rename files from lower to upper case. ... > # Upper case all lowercase file in a given directory. ...
    (perl.beginners)
  • Is this script safe?
    ... I wanted a script that would rename files from lower to upper case. ... # Upper case all lowercase file in a given directory. ...
    (perl.beginners)
  • Re: Help with files and spaces with shell script
    ... you should never name unexported variables with UPPER CASE names. ... By following that convention your script variable ... not need to be the person exporting the variable. ...
    (Fedora)
  • Re: Is this script safe?
    ... > I wanted a script that would rename files from lower to upper case. ... lowercase letter, right? ... the slash if it exists. ...
    (perl.beginners)