http://www.perlmonks.org?node_id=642132


in reply to How to write a program to read stdin or command line?

I'd use Getopt::Long (or Getopt::Std, if that's your preference) to tell the program whether the input is on the commandline or not. One convention for this is to expect the input data on the commandline by default, but if a -i (--input) option is present, to read stdin instead.

A word spoken in Mind will reach its own level, in the objective world, by its own weight

Replies are listed 'Best First'.
Re^2: How to write a program to read stdin or command line?
by ikegami (Patriarch) on Oct 02, 2007 at 15:27 UTC

    I don't see why -i is required. If it's not on the command line, then it must be on STDIN, so there's no reason to use -i.

    my $input = @ARGV ? shift(@ARGV) : <STDIN>;

    That's the approach <ARGV> uses.

      Scalability / future expansion. The program may need other data on the command line unrelated to the need stated in the OP.

      Anyway, I didn't say -i is required. I answered the question "How would you...." And this is how I would. If you would do it otherwise, fine.

Re^2: How to write a program to read stdin or command line?
by naikonta (Curate) on Oct 03, 2007 at 07:13 UTC
    I like the flexibility of Getopt::Long and simplicity of Getopt::Std. For even simpler and quick solution, I much prefer the -s switch.

    Open source softwares? Share and enjoy. Make profit from them if you can. Yet, share and enjoy!