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]

Reply via email to