Bruce Ambraal wrote:
> 
> Please explain to me what this code does, here I'm tying to rename files
> in current directory to 1.fil, 2.fil, ...
> 
> [snip code]
> 
> The complete program is:
> ------------------------------------------------
> #!/usr/local/bin/perl -w
> # first example...
> 
> use strict;
> 
> # declarations...
> my @files = `ls -F`;

There is no good reason to run an external program to
get the files from the current directory.

my @files = glob '*';

# or
my @files = <*>;

# or
opendir DIR, '.' or die "Cannot open dir '.': $!";
my @files = readdir DIR;
closedir DIR;


> my %fil;
> foreach my $f ( @files ){
>         if( $f =~ /private/ ){ next; }
>         chomp $f;
>         $fil{$f} = 0;
>         # if we match the extension...
>         if( $f =~ /\.$extension$/ ){
>         }
>         # if this isn't a directory name...
>         if( $f !~ /\\$/ ){ delete( $fil{$f} ); }

If you want to test if a file name is a directory you
can use the -d function.

         delete $fil{$f} if -d $f;


> }
> 
> Would some luv some assistance.
> 
> The struggling part is after having read current dir
> file into an array, I now want to rename these files
> into current dir to 1.fill, 2.fill, ...


#!/usr/local/bin/perl -w
# first example...
use strict;

my $counter = 0;
my $extension = 'something';

for my $file ( glob '*' ) {
    next if -d $file or $file =~ /private/;
    next unless $file =~ /\Q.$extension\E$/;

    $counter++ while -e "$counter.fill";
    rename $file, "$counter.fill" or die "Cannot rename $file to $counter.fill: $!";
    }

__END__


John
-- 
use Perl;
program
fulfillment

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

Reply via email to