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

Re: Re: Re: Re: Test for standard input

by mikfire (Deacon)
on Oct 03, 2002 at 18:05 UTC ( [id://202597]=note: print w/replies, xml ) Need Help??


in reply to Re: Re: Re: Test for standard input
in thread Test for standard input

Sorry, I cannot resist. Your code is ummmm doing lots of things that I do not think are what you intend.
$ARGS = @ARGV; if ( -t and $ARGS eq 0 ) { }
The more idiomatic way of saying this is
die "No input found\n" if ( -t and @ARGV == 0 );
I would also like to point out that you are testing the wrong kind of equality in your code -- you used the string equality test ( eq ) instead of the numeric test ( == ). In this case it worked, but it will someday drive you nuts trying to hunt this kind of bug down.

$names++, shift if $ARGV[0] eq "-l";
If I have figured this out correctly, you are trying to parse some command line options. I would strongly recommend using Getopt::Long, a core module that does this job very well.

I am assuming you really mean to shift the argument you just parsed out of @ARGV. Unfortunately, shift with no arguments assumes you mean @_, which is not @ARGV. Again, it likely works in this case, but I really doubt this is your intended affect.

The same holds true for the next line.

@ARGV = "-" unless @ARGV;
This code will never be executed. I am assuming it is a hold-over from your previous problems. The 'if' at the top of the program makes certain that @ARGV has to have something in it.

The assignment back to @ARGV is a little.... ugly IMHO. It took me several tries to figure out what it is doing. I would likely write this expression as

exit 0 unless ( grep { -T or $_ eq "-" } @ARGV );
but this is likely more a stylistic thing.

Oh, good use of the -w flag. It appears, though, you forgot to use strict. It will seem a pain at first, but it will really help as your programs get longer and more complex.

Mik
mikfire

Replies are listed 'Best First'.
Re: Re: Re: Re: Re: Test for standard input
by BUU (Prior) on Oct 03, 2002 at 23:57 UTC
    <pedantry>shift in a non subroutine context shifts from @ARGV.</pedantry>
      Damn. I have been programming perl for years now and I did not know this. Thanks!

      Mik
      mikfire

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (7)
As of 2025-06-19 12:07 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?
    erzuuliAnonymous Monks are no longer allowed to use Super Search, due to an excessive use of this resource by robots.