Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

Re: Manipulating STDIN

by Revelation (Deacon)
on Apr 11, 2004 at 23:11 UTC ( [id://344292]=note: print w/replies, xml ) Need Help??


in reply to Manipulating STDIN

I don't know if this won't work for some reason, but why not:
my @f; while ( $_ = scalar @f ? shift @f : <STDIN> ) { chomp; unshift(@f,"hi test test") if condition; }
If you won't be shifting '0' or '', then even  $_ = shift @f || <STDIN> works. Both solutions are simpler than tie()-ing STDIN; just replace reads from STDIN to  shift @f || <STDIN> inside the loop for seamless transition. Becase I'm a fan of using a block, instead of while syntax, with longer conditons and assignments, I'll also give you an alternative control structure:
my @f; { redo if $_ = shift @f || <STDIN>; }
If you're only reading from STDIN at the beggining, or don't mind copying and pasting a bit, then both solutions are strong. They mean one less module to debug, and one less layer of complexity in your code. It also gives a speed bonus over tie()-ing. If you _must_ tie to *STDIN, gmpassos provides an elegant solution. I feel like that's an unnecessary convolution, though.

Gyan Kapur
Untested

Replies are listed 'Best First'.
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
Domain Nodelet?
Node Status?
node history
Node Type: note [id://344292]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others romping around the Monastery: (9)
As of 2024-03-28 10:17 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found