Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

text file reading

by noobee (Acolyte)
on Dec 18, 2007 at 02:05 UTC ( #657585=perlquestion: print w/replies, xml ) Need Help??

noobee has asked for the wisdom of the Perl Monks concerning the following question:

Hi Folks, I have a text file as below:
asdsadsd /* asds wqeoiywe qwe qwewewe oooooo sadssdsa

In order to process the above kind of text file, I wrote the following code:
#!/usr/bin/perl use warnings; use strict; package main; my $file = './test_file'; my $line = inFile->new($file); print $line->getLine(); package inFile; sub new { my $class = shift; my $self = { fname => shift, fp => undef, lineno => 0, buff => [] }; my $fname = $self->{fname}; open($self->{fp},"< $fname") || die "failed to open the file $fname + ($!)\n"; bless $self, $class; } sub getLine { my ($self) = @_; my $fp = $self->{fp}; my $buf = $self->{buff}; if (@{$buf}) { $self->{lineno}++; return shift @{$buf}; } my $line; while ($line = <$fp>) { $self->{lineno}++; chomp $line; next if $line =~ /^\s*$/; return $line; } return undef; }

When I execute the above code, the result I get is only the first line
asdsadsd
But what I want to do is process the whole file and print each of the lines. Can you please point out what I am doing wrong?
--Jessica

Replies are listed 'Best First'.
Re: text file reading
by GrandFather (Saint) on Dec 18, 2007 at 02:27 UTC

    Replace your print line with:

    print "$_\n" while $_ = $line->getLine();

    Perl is environmentally friendly - it saves trees
      GrandFather,
      Thank you. That works perfect!
      Jessica.
Re: text file reading
by pfaut (Priest) on Dec 18, 2007 at 02:18 UTC

    The getLine routine reads the file until it finds a non-blank line or end of file. You only called it once so you only read one line from the file. If you want to read them all, you need to loop on print $line->getLine(); until it returns undef.

    90% of every Perl application is already written.
    dragonchild
A reply falls below the community's threshold of quality. You may see it by logging in.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://657585]
Approved by GrandFather
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (6)
As of 2021-03-08 13:12 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    My favorite kind of desktop background is:











    Results (124 votes). Check out past polls.

    Notices?