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

Re: Arguments from CLI or <STDIN>

by golux (Chaplain)
on Aug 04, 2017 at 19:25 UTC ( #1196749=note: print w/replies, xml ) Need Help??

in reply to Arguments from CLI or <STDIN>

Hi burszuras,

You may also be interested in the -t file test (on line 23):

-t Filehandle is opened to a tty.
which is a nice way to discover whether you're at the tail end of a pipe or not.

For example:

#!/usr/bin/perl use strict; use warnings; use feature qw( say ); use File::Basename; my $iam = basename($0); if (-t *STDIN) { my $nargs = @ARGV; say "Script '$iam' called from a terminal with $nargs arg(s):"; for (my $idx = 0; $idx < $nargs; $idx++) { printf " %2d. %s\n", $idx+1, $ARGV[$idx]; } } else { say "Script '$iam' is receiving input from a pipe"; }
Call the above script like this: ./script arg1 arg2 arg3 and you get:
Script 'script' called from a terminal with 3 arg(s): 1. arg1 2. arg2 3. arg3
If you call it like this, instead: echo Pipe to script | ./script then you'll get this:
Script 'script' is receiving input from a pipe
In the latter case, you could then do:
while (<STDIN>) { say "Got input: $_"; }
or similar, to handle the piped data as you desire.
say  substr+lc crypt(qw $i3 SI$),4,5

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others having an uproarious good time at the Monastery: (7)
As of 2020-11-24 21:39 GMT
Find Nodes?
    Voting Booth?

    No recent polls found