-----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.

>I must misunderstand the use of the file test, but I'm not getting any help
>from "Programming Perl" or the man pages.
>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.

>  for (my $i=0; $i<=scalar(@files);$i++){

I assume that the values in @files are properly filled in. If so, define my $i outside 
the for expression for proper scoping. 
Also you don't need to give scalar on @files 

my $i = 0;
for ($i = 0; $i < @files ;$i++){
or 
for ($i = 0; $i <= $#files ;$i++){


>    if (-f $files[$i] && -T $files[$i]) {
This should now work. 

>      open (iFH, "<$files[$i]") or die ("$progname: Can't open infile 
>->>$files[$i]\n");        # input file
You can use $! to spit out the error message. 
open (iFH, "<$files[$i]") or die ("$progname: LINE: ",__LINE__, " !$ $files[$i]\n");
>      open (oFH, ">$tmpfile$i") or die ("$progname: Can't open tmpfile 
>->$tmpfile$i\n");


>      while (defined(my $txtline = <iFH>)){
>        chomp($txtline);
>        $txtline =~ s/\n/\r\n/g;
>        print oFH $txtline;
>      }

The above can be rewritten as

      while (<iFH>) {
        chomp;
        s/\n/\r\n/g; # Need to see if this works. I think, it should work. 
        print oFH;
      }
>      close oFH; 
>      close iFH;
>      $files[$i] = "$tmpfile$i"; 

Don't know why you are doing this ??

>    }
>  }



Consider using foreach instead of for  

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

Reply via email to