Last active
October 30, 2022 08:24
-
-
Save weibeld/72ae500a602fcf2253eceaa6e3d3fdce to your computer and use it in GitHub Desktop.
Reference example for using the Getopt::Std Perl module
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
use strict; | |
use warnings; | |
use feature qw(say); | |
use Getopt::Std; | |
# If set to true, exit script after processing --help or --version flags | |
$Getopt::Std::STANDARD_HELP_VERSION = 1; | |
our $VERSION = "0.1"; | |
#------------------------------------------------------------------------------# | |
# Options | |
#------------------------------------------------------------------------------# | |
my %opts; | |
# -f requires an argument, -l does not take an argument | |
getopts('f:l', \%opts) or abort(); | |
say "Supplied options:"; | |
if (defined $opts{f}) { | |
say "-f $opts{f}"; | |
} | |
if (defined $opts{l}) { | |
say "-l $opts{l}"; | |
} | |
#------------------------------------------------------------------------------# | |
# Positional Arguments | |
#------------------------------------------------------------------------------# | |
# Note: positional arguments must be specified AFTER all options on the command | |
# line. There may be a double-dash (--) between options and arguments. | |
say "Trailing positional arguments (" . scalar(@ARGV) . "):"; | |
for my $i (0 .. $#ARGV) { | |
say $ARGV[$i]; | |
} | |
#------------------------------------------------------------------------------# | |
# Subroutines | |
#------------------------------------------------------------------------------# | |
# Called by Getopt::Std when supplying --help option | |
sub HELP_MESSAGE { | |
say get_help_message(); | |
} | |
# Called by Getopt::Std when supplying --version or --help option | |
sub VERSION_MESSAGE { | |
say "Version $VERSION"; | |
} | |
# Abort script due to error (e.g. invalid command line options) | |
sub abort { | |
say get_help_message(); | |
exit 1; | |
} | |
# Central help message | |
sub get_help_message { | |
return "Hi, I'm the help message :)"; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I'm never planning to use Perl 6. Love Perl 5.XXXXXXXX.