:-) $_ is basically the first variable of @_ which is the array that Perl is currently working on.
So when your script is complaining about something in $_[3] what it is saying is that the 4th variable (Perl starts counting at 0) in the @_ array is making the compiler unhappy. I hope this helps a bit. Look at line 83 of your code as you are using $_[3] in comparison, but $_[3] might be undefined which will cause your interpeter to scream at you. On 9/18/07, Ryan Moszynski <[EMAIL PROTECTED]> wrote: > > hi, > i'm using a perl script i found 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? > > Thanks, > > Ryan > > i found the file here: > > http://noisybox.net/computers/eren/ > > file download link: > http://noisybox.net/computers/eren/eren.pl > > warning thrown: > Use of uninitialized value in pattern match (m//) at C:\pPerl\eren.pl line > 82. > > (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; > 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 } > > -- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > http://learn.perl.org/ > > >