Getopt::Std(3pm)
π Getopt::Std β the manual page, but make it make sense
okay so this is the Getopt::Std(3pm) page from the Perl Programmers Reference Guide, and bestie, we're gonna get you comfy with single-character switches and switch clustering. no cap, it's lowkey iconic. π
β¨ NAME β¨
Getopt::Std β process single-character switches with switch clustering π¦
πΈ SYNOPSIS πΈ
use Getopt::Std;
getopts('oif:'); # -o & -i are boolean flags, -f takes an argument
# Sets $opt_* global variables as a side effect
getopts('oif:', \my %opts); # Options as above, values in %opts
getopt('oDI'); # -o, -D & -I take arguments
# Sets $opt_* global variables as a side effect
getopt('oDI', \my %opts); # -o, -D & -I take arg, values in %opts
π DESCRIPTION π
The getopts() function processes single-character switches with switch clustering. You pass it one argument: a string containing all the switches you want it to recognize. π«Ά
For each switch it finds:
- if an argument is expected and provided,
getopts()sets$opt_x(wherexis the switch name) to the value of the argument. - if an argument is expected but none is provided,
$opt_xis set to an undefined value. - if a switch does not take an argument,
$opt_xis set to1.
Switches that take an argument don't care whether there's a space between the switch and the argument. iconic behavior, honestly. β¨
If unspecified switches are found on the command-line, the user will be warned that an unknown option was given. not me being the friend who tells you your flag is fake π
getopts() returns true unless an invalid option was found. periodt.
The getopt() function is similar, but its argument is a string containing all switches that take an argument. If no argument is provided for a switch β say, y β the corresponding $opt_y will be set to an undefined value. Unspecified switches are silently accepted. Use of getopt() is not recommended. like, it's giving deprecated energy, ngl. π
Note that, if your code is running under the recommendeduse strict varspragma, you will need to declare these package variables withour:
our($opt_x, $opt_y);
For those of you who don't like additional global variables being created, getopt() and getopts() will also accept a hash reference as an optional second argument. Hash keys will be "x" (where "x" is the switch name) with key values the value of the argument or 1 if no argument is specified. very main character energy for people who hate globals π
To allow programs to process arguments that look like switches, but aren't, both functions will stop processing switches when they see the argument --. The -- will be removed from @ARGV. slay, a little escape hatch. π
π§ "--help" and "--version" π§
If - is not a recognized switch letter, getopts() supports arguments --help and --version. π
If main::HELP_MESSAGE() and/or main::VERSION_MESSAGE() are defined, they are called; the arguments are the output file handle, the name of option-processing package, its version, and the switches string. If the subroutines are not defined, an attempt is made to generate intelligent messages; for best results, define $main::VERSION. π
If embedded documentation (in pod format, see perlpod) is detected in the script, --help will also show how to access the documentation. so helpful, fr fr.
Note that due to excessive paranoia, if$Getopt::Std::STANDARD_HELP_VERSIONisn't true (the default is false), then the messages are printed onSTDERR, and the processing continues after the messages are printed. This being the opposite of the standard-conforming behaviour, it is strongly recommended to set$Getopt::Std::STANDARD_HELP_VERSIONto true. like please, bestie, set it. the paranoia is not the vibe. π
One can change the output file handle of the messages by setting $Getopt::Std::OUTPUT_HELP_VERSION. One can print the messages of --help (without the Usage: line) and --version by calling functions help_mess() and version_mess() with the switches string as an argument. cute little manual override, iykyk. π
made with π from perl v5.42.3, dated 2026-11-03 β that's the footer, bestie, and it ate. π
π¦ where this page comes from
- alpine 3.24: perl-doc 5.42.3-r0 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms