I have a Perl script which takes both command line arguments and STDIN
#!/usr/bin/perl -w
use strict;
use warnings;
my $logpath = $ARGV[0];
print "logpath : $logpath\n";
print "Name : ";
my $name = <>;
chomp($name);
print "my name is $name\n";
It does not stop at stdin input. Works fine for any one of command line or standard input but not for both.
Any Reason?
Change
my $name = <>;
to
my $name = <STDIN>;
If @ARGV
has no elements, then the diamond operator will read from STDIN
but in your case since you are passing arguments though command line, @ARGV
will not be empty. So when you use the diamond operator <>
to read the name, the first line from the file whose name is specified on the command line will be read.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With