in reply to Shorter/Better way to rename list of files in a directory

Hello Everyone,

I am trying a similar code in my windows environment, the files are not getting renamed.

$var = 0; $UserInputDir = "<mydir>"; opendir DH, $UserInputDir or die "Cannot open $UserInputDir: $!"; @files = readdir DH; foreach $file (@files) { next if $file=~/^\./; $OldFileName = $file; $file =~ s/.*.Log/ObjMgr_enu_$var.Log/; $var = $var + 1; rename ($OldFileName,$file); } closedir DH;

Not sure if something needs to be changed for windows.

Thanks Xhings

Replies are listed 'Best First'.
Re^2: Shorter/Better way to rename list of files in a directory
by Anonymous Monk on Apr 08, 2012 at 08:00 UTC

    This code i got from you guys at this forum but it gives me these errors. " Global symbol "@fileList" requires explicit package name at ./RenamingFiles.pl line 16. Execution of ./RenamingFiles.pl aborted due to compilation errors." so what is the wrong with the Array @fileList

    #!/usr/bin/perl use strict; use warnings; use IO::File; my $dir="/Users/user/Desktop/Internet Programing Course/intern +et_programming/73/"; #chdir $dir or die "Error \n"; my @filesList= glob "${dir}*Closed*"; foreach (@fileList){ next if -d; my $oldname= $_; s/Closed/Open/; rename $oldname, $_; }
      ... And rightfully so. You misspelled filesList (or fileList). You tell Perl you want to use a variable named @filesList in
      my @filesList = ...
      But then use a different, undeclared name. Because you are using the "strict" pragma, Perl knows that you want to be notified of such spelling errors.