From: richard noel fell <[EMAIL PROTECTED]>
> Here is an abridged version of what I am trying to do which is:
> 1) write to a file in one subroutine
> 2) write the contents of the original file to another file in a
> separate subroutine.
>
> However, I get the error message:
>
> Use of uninitialized value in string at ./scratch2.pl line 24, <In1>
> line 1. Use of uninitialized value in string at ./scratch2.pl line 24,
> <In1> line 2. ...
>
> I cannot figure out what is happening. Can anyone explain this
> behavior to me? Thanks, Dick Fell
>
> sub print_out{
> open In1,"/home/rfell/tutoring/beaven/webproject/tmp/in.tmp"
> or die "Cannot open in.tmp:$!";
> open Out1, ">/home/rfell/tutoring/beaven/webproject/tmp/out.tmp"
> or die "Cannot open out.tmp:$!";
> while(defined<In1>){
> print Out1 "$_"; }
> }
The problem is in the while() { line.
If you write this :
while (<In1>) {
then the lines are read from In1 one by one and stored in $_.
As soon as there is nothing more to read, the loop ends.
But the automatic assignment to $_ ONLY works if there is nothing
else in the loop condition but the <FILEHANDLE>. So the
while (defined <In1>) {
reads a line from In1, tests whether there was a line to read and
throws away the line it read. And $_ is not even touched.
Jenda
P.S.: DO NOT USE
print "$_";
or
print "$variable";
Do not enclose variable names in quotes unless there is some
more text into which you want to insert the variable value.
=========== [EMAIL PROTECTED] == http://Jenda.Krynicky.cz ==========
There is a reason for living. There must be. I've seen it somewhere.
It's just that in the mess on my table ... and in my brain
I can't find it.
--- me
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]