I am trying to collect the values from command line using Getopt::Std in my Perl script.
use Getopt::Std;
$Getopt::Std::STANDARD_HELP_VERSION = 1;
getopts('i:o:p:');
my $inputfile = our $opt_i;
my $outputfile = our $opt_o;
my $parameter_value = our $opt_p;
Here the first two variables ($inputfile,$outputfile) are mandatory but the last variable ($parameter_value) is optional and can be ignored.
I am trying to set some value by default to the last variable ($parameter_value) when the -p
flag is ignored at the command line.
I tried using this:
my $parameter_value = our $opt_p || "20";
Here its passes the correct value when -p flag is ignored at command line. But the problem is when I am providing some value from the command line (for instance -p 58), the same value 20 is passed to the program instead of 58 which I passed from command line.
Can you please help me out by pointing the mistakes I am making here?
Thank you.
The best thing is to use Getopt::Long and use a hash instead of individual variables. Then you can pass default values by pre-populating the array
use Getopt::Long;
my %opts = (parameter => 20);
GetOptions( \%opts,
'p|parameter=i',
'o|outputfile=s',
'i|inputfile=s'
) or die "Invalid parameters!";
# I didn't bother cloning STANDARD_HELP_VERSION = 1;