For Programmers: Free Programming Magazines  


Home > Archive > PERL Beginners > October 2004 > Reading from a filehandle in while-loop









You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

 

Author Reading from a filehandle in while-loop
Bastian Angerstein

2004-10-26, 8:55 am


Why does this don´t work in my Script?

open (TEST, "</tmp/test.txt");
while (<TEST> ) {
print $_;
# or just
print;
}

Flemming Greve Skovengaard

2004-10-26, 8:55 am

Bastian Angerstein wrote:
> Why does this don´t work in my Script?
>
> open (TEST, "</tmp/test.txt");
> while (<TEST> ) {
> print $_;
> # or just
> print;
> }
>
>


Does the file exists and can you read it?

--
Flemming Greve Skovengaard The killer's breed or the Demon's seed,
a.k.a Greven, TuxPower The glamour, the fortune, the pain,
<dsl58893@vip.cybercity.dk> Go to war again, blood is freedom's stain,
4112.38 BogoMIPS Don't you pray for my soul anymore.

Chris Cole

2004-10-26, 8:55 am

On Tue, 26 Oct 2004 11:44:53 +0200, Flemming Greve Skovengaard wrote:

> Bastian Angerstein wrote:
>
> Does the file exists and can you read it?


Try this instead:

open (TEST, "</tmp/test.txt") or die "can't open file: $!\n";
while (<TEST> ) {
print $_;
# or just
print;
}

You should always test if a file open has succeeded. With as your scripts
get more involved remember to use warnings and strict.
HTH
Chris.

Flemming Greve Skovengaard

2004-10-26, 8:55 am

Bastian Angerstein wrote:
> Joop,
> if I use open... or die "$!" i see that the file is opened correctly but nothing is in $_.
>
>
>
>
> -----Ursprüngliche Nachricht-----
> Von: Flemming Greve Skovengaard [mailto:dsl58893@vip.cybercity.dk]
> Gesendet: Dienstag, 26. Oktober 2004 11:45
> An: beginners@perl.org
> Cc: Bastian Angerstein
> Betreff: Re: Reading from a filehandle in while-loop
>
>
> Bastian Angerstein wrote:
>
>
>
> Does the file exists and can you read it?
>


Bottompost, please.
Your script works on my machine. Is this you whole script, do you use:

use strict;
use warnings;

in your script and is there any content in /tmp/test.txt?

--
Flemming Greve Skovengaard The killer's breed or the Demon's seed,
a.k.a Greven, TuxPower The glamour, the fortune, the pain,
<dsl58893@vip.cybercity.dk> Go to war again, blood is freedom's stain,
4112.38 BogoMIPS Don't you pray for my soul anymore.

Flemming Greve Skovengaard

2004-10-26, 8:55 am

Bastian Angerstein wrote:
> I noticed that while ($test=<TEST> ) works on my system perfectly but while (<TEST> ) don´t ... don´t know why...
> should reinstall perl.
>
> Thanks for your help
> Bastian


They should both work, why they don't is beyond me.

Please post on the list, I am *not* a all-seeing, all-knowing Perl guru,
you know, while I can't answer why one work and the other doesn't someone else
on the list might.

And again, please bottompost.

--
Flemming Greve Skovengaard FAITH, n.
a.k.a Greven, TuxPower Belief without evidence in what is told
<dsl58893@vip.cybercity.dk> by one who speaks without knowledge,
4112.38 BogoMIPS of things without parallel.

David le Blanc

2004-10-26, 3:56 pm

On Tue, 26 Oct 2004 11:33:24 +0200, Bastian Angerstein
<ang@nmc-m.dtag.de> wrote:
>=20
> Why does this don=B4t work in my Script?
>=20
> open (TEST, "</tmp/test.txt");
> while (<TEST> ) {
> print $_;
> # or just
> print;
> }


You are making the assumption that '<TEST>' sets '$_' which is not
true. Oddly, perl makes '<>' set $_, but not <FILE>... dunno why

consider

while( $_ =3D <TEST> ) {
}


>=20
> --
> To unsubscribe, e-mail: beginners-unsubscribe@perl.org
> For additional commands, e-mail: beginners-help@perl.org
> <http://learn.perl.org/> <http://learn.perl.org/first-response>
>=20
>

Bob Showalter

2004-10-26, 3:56 pm

David le Blanc wrote:
....
> You are making the assumption that '<TEST>' sets '$_' which is not
> true. Oddly, perl makes '<>' set $_, but not <FILE>... dunno why


Sorry, but that's just not correct.

while (<TEST> )

DOES set $_, as documented in perldoc perlop under the secion "I/O
Operators"

The OP has some other problem.
Randal L. Schwartz

2004-10-27, 3:55 am

>>>>> "David" == David le Blanc <dmleblanc@gmail.com> writes:

David> You are making the assumption that '<TEST>' sets '$_' which is not
David> true. Oddly, perl makes '<>' set $_, but not <FILE>... dunno why

No, that's completely wrong.

--
Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
<merlyn@stonehenge.com> <URL:http://www.stonehenge.com/merlyn/>
Perl/Unix/security consulting, Technical writing, Comedy, etc. etc.
See PerlTraining.Stonehenge.com for onsite and open-enrollment Perl training!
Sponsored Links







Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive

Copyright 2008 codecomments.com