Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
PerlMonks  

Re: Beginner in perl : Use of uninitialized value

by jimpudar (Pilgrim)
on Dec 28, 2018 at 18:45 UTC ( [id://1227791]=note: print w/replies, xml ) Need Help??


in reply to Beginner in perl : Use of uninitialized value

Just another tip: there is no need to read all of STDIN into an array; you can iterate over each line as it comes in.

while ( my $line = <STDIN> ) { ... }

The diamond operator <> will do some pretty fancy stuff for you by default. You can for example leave out the explicit STDIN:

while ( my $line = <> ) { ... }

What is really cool about this is that now in addition to working with STDIN you can also pass a list of filenames to your Perl program and it will do the right thing.

See perlop - IO Operators for more details on the diamond operator.

Of course you also don't need to set an explicit loop variable for a program of this size; you can just use $_:

while (<>) { ... }

And at this point, you may want to look into Perl's -n command line option, which will automatically wrap your entire program inside that exact same loop:

bash:~$ perl -nE '...'

πάντων χρημάτων μέτρον έστιν άνθρωπος.

Replies are listed 'Best First'.
Re^2: Beginner in perl : Use of uninitialized value
by jwkrahn (Abbot) on Dec 28, 2018 at 19:41 UTC
    Just another tip: there is no need to read all of STDIN into an array; you can iterate over each line as it comes in.
    foreach my $line (<STDIN>) { ... }

    The problem with that is that the foreach loop will read all lines into a list in memory first.

    You need a while loop to iterate over one line at a time:

    while ( my $line = <STDIN> ) { ... }

      Quite right, that's what I get for posting without testing my code :).

      I edited my comment to correct this.

      πάντων χρημάτων μέτρον έστιν άνθρωπος.

        Thank you @jwkrahn and @jimpudar , it's been such a great learning so far , I will definitely keep these things in mind when coding next time.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1227791]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others rifling through the Monastery: (6)
As of 2024-04-19 11:16 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found