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