Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Pass command line arguments as well as input from STDIN for Perl script?

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?

like image 868
naveenhegde Avatar asked Mar 25 '11 10:03

naveenhegde


1 Answers

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.

like image 181
codaddict Avatar answered Nov 15 '22 06:11

codaddict