> -----Original Message-----
> From: Thomas 'Gakk' Summers [mailto:[EMAIL PROTECTED]]
> Sent: Wednesday, September 25, 2002 8:34 AM
> To: [EMAIL PROTECTED]
> Subject: File testing
>
>
> Warning: Perl Novice Alert!
>
> I'm trying to:
> 1. read in a list of files,
> 2. test for text,
> 3. convert the text files from '\n' unix to '\r\n' dos
> 4. write them to a temporary location.
>
> The code below produces an error: 'Use of uninitialized value
> in -f at...'
> in line 2.
That's a warning, not an error. Your script still runs. Frequently that
warning is innocuous, but here it points to a minor flaw in your code.
>
> I must misunderstand the use of the file test, but I'm not
> getting any help
> from "Programming Perl" or the man pages.
No, your file test is OK.
> Please help?
>
> p.s. My method of converting is flawed as well, but I
> haven't tried to fix
> it yet. Please feel free to comment on how better to do that.
> p.p.s. I suspect that numerous other bugs are here, but I
> haven't been able
> to test the 'for loop' either.
>
> *******************************8
> for (my $i=0; $i<=scalar(@files);$i++){
^^
This should be just < (less than).
If @files contains 10 elements, then you are allowing $i to range 0 to 10.
But there is no $files[10]. $files[9] is the last entry.
Also, you don't technically need scalar() here, since the boolean comparison
evaluates @files in scalar context anyway.
A more idiomatic way to write this is:
for my $i (0 .. @files) {
I'll let others comment on the rest of the script....
[snip]
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]