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