Ryan Moszynski wrote:
hi,
Hello,
i'm using a perl script i found
You should be careful with stuff you find lying around.
to change the names of batches of
files. The program works as is but it's giving me a weird warning.
I'm familiar with $_, but not $_[3]. Can someone explain what $_[3]
is, and how i can get this script to stop throwning the warning?
$_[3] is the fourth element of the array @_.
i found the file here:
http://noisybox.net/computers/eren/
file download link:
http://noisybox.net/computers/eren/eren.pl
Did you read the second line of that file?
# this program sucks and is a total hack and needs TONS of work...
warning thrown:
Use of uninitialized value in pattern match (m//) at C:\pPerl\eren.pl line 82.
This means that the fourth element of the array @_ contains the value undef.
(i changed the file a bit so it won't be the same line number if you
checkout the whole file)
code from my file:
76 foreach my $file (@files){
77 next if -d($root . $file);
78
79 next if (($preview) and not ($file =~ /$filefilter/));
80 @_ = split /\//, $replacestr;
81 my $icase = '';
82 ($_[3] =~ /i/) and $icase = 'i';
#**************************************************
83 my $cmd = sprintf("\$file =~ /%s/%s;", $_[1], $icase);
84
85 next if not eval $cmd;
As the comment says, this sucks. You can accomplish the same thing without
using eval.
86
87 $preview and print "PREVIEW: ";
88 $matchct++;
89
90 my $oldfile = $file;
91 print "$oldfile --> ";
92 $file =~ eval " \$file =~ s$replacestr;";
93 print "$file\n";
94 $preview and next;
95 rename($root . $oldfile, $root . $file) or print "Failed to rename
$root$oldfile\n";
96 }
John
--
Perl isn't a toolbox, but a small machine shop where you
can special-order certain sorts of tools at low cost and
in short order. -- Larry Wall
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/