0% found this document useful (0 votes)
198 views

Perl - How To Use Getopt - Long Method - Stack Overflow PDF

This Stack Overflow post discusses different ways to use the Getopt::Long module in Perl to parse command line options and arguments. The top answers provide examples demonstrating how Getopt::Long can parse options passed in different formats, and explain options like "pass_through" that allow passing unknown arguments.

Uploaded by

Gaurav Panwar
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
198 views

Perl - How To Use Getopt - Long Method - Stack Overflow PDF

This Stack Overflow post discusses different ways to use the Getopt::Long module in Perl to parse command line options and arguments. The top answers provide examples demonstrating how Getopt::Long can parse options passed in different formats, and explain options like "pass_through" that allow passing unknown arguments.

Uploaded by

Gaurav Panwar
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 3

11/11/2014

perl - How to use Getopt::Long method? - Stack Overflow


sign up

log in

Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free, no
registration required.

tour

help

stack overflow careers

Take the 2-minute tour

How to use Getopt::Long method?

How can I use Getopt::Long method if the input command execution is like this:
$ testcmd -option check

ARG1 ARG2 ARG3

or
$ testcmd
perl

ARG1 ARG2 ARG3

getopt-long

edited Jun 30 '10 at 16:14


Ether
34.8k 9 51 122

asked Jun 30 '10 at 11:04


Tree
1,397 7 36 63

That depends on what you want to have done with those options and flags. The people who answer below are
trying to make their best guess, but mind-reading is a difficult skill to master. Ether Jun 30 '10 at 16:15

add a comment

3 Answers
A quick example:
#! /usr/bin/perl
use warnings;
use strict;
use Getopt::Long;
sub usage { "Usage: $0 [--option=VALUE] ARG1 ARG2 ARG3\n" }
my $option = "default";
GetOptions("option=s", \$option)
or die usage;
die usage unless @ARGV == 3;
print "$0: option=$option: @ARGV\n";
Getopt::Long is quite flexible in what it will accept:

http://stackoverflow.com/questions/3148574/how-to-use-getoptlong-method

1/3

11/11/2014

perl - How to use Getopt::Long method? - Stack Overflow


$ ./cmd
Usage: ./cmd [--option=VALUE] ARG1 ARG2 ARG3
$ ./cmd 1 2 3
./cmd: option=default: 1 2 3
$ ./cmd --option=foo 4 5 6
./cmd: option=foo: 4 5 6
$ ./cmd -option=bar 7 8 9
./cmd: option=bar: 7 8 9
$ ./cmd -option check a b c
./cmd: option=check: a b c
edited Jun 30 '10 at 11:38

answered Jun 30 '10 at 11:11


Greg Bacon
53.5k 11 111 175

add a comment

You need to enable the pass_through option. Documentation quoted below:

pass_through (default: disabled)


Options that are unknown, ambiguous or supplied with an invalid option value are passed through in
@ARGV instead of being flagged as errors. This makes it possible to write wrapper scripts that
process only part of the user supplied command line arguments, and pass the remaining options to
some other program.
If require_order is enabled, options processing will terminate at the first unrecognized option, or
non-option, whichever comes first. However, if permute is enabled instead, results can become
confusing.
DVK's posted an example of how to do this in another answer. I'd upvote his answer first if you find it
useful.
edited Jun 30 '10 at 11:19

answered Jun 30 '10 at 11:12


Zaid
21.5k 6 44 99

+1 for recognizing that values starting with "-" need to be passed through DVK Jun 30 '10 at 13:28
add a comment

http://stackoverflow.com/questions/3148574/how-to-use-getoptlong-method

2/3

11/11/2014

perl - How to use Getopt::Long method? - Stack Overflow


#!/usr/bin/perl
use Getopt::Long;
my $cla = GetOptions (

"one=s"
"two=s"
"three=s"
"help|h|?"

=>
=>
=>
=>

\$one,
\$two,
\$three,
\$help,

) or usage ();
if ($help) {
usage ();
}
my $first = $one;
my $second = $two;
my $third = $three;
printf ("%-7s %-9s %-7s\n", $first, $second, $third);
sub usage {
print "\n$0\t" . "[ -one <text> -two <text> -three <text> ]\n\n";
exit (0);
}
answered Nov 3 '13 at 2:52
Rukmangathan
1
Maybe you should add some sort of explanation to your code so it can be more useful. Meryovi Nov 3 '13 at
14:25
add a comment

Not the answer you're looking for? Browse other questions tagged perl getopt-long or
ask your own question.

http://stackoverflow.com/questions/3148574/how-to-use-getoptlong-method

3/3

You might also like