Getopt::Std(3perl)

πŸ’– Getopt::Std β€” the Perl Programmers Reference Guide's cutest little switch gobbler πŸ’–

okay bestie, gather round, because this is the manual page for Getopt::Std from the Perl Programmers Reference Guide and it's literally the thing that processes single-character switches with switch clustering. iykyk. πŸŽ€


✨ NAME ✨

Getopt::Std β€” process single-character switches with switch clustering, no cap πŸ¦‹


🌸 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

like look at her. five lines. she's doing so much. πŸ’…


πŸ’œ DESCRIPTION πŸ’œ

so the getopts() function processes single-character switches with switch clustering (yes that's the whole vibe, them all squished together like a group selfie πŸ“Έ). You pass it one argument β€” a string containing all the switches to be recognized.

For each switch found:

  • if an argument is expected and provided, getopts() sets $opt_x (where "x" is the switch name) to the value of the argument ✨
  • if an argument is expected but none is provided, $opt_x is set to an undefined value 😭
  • if a switch does not take an argument, $opt_x is set to 1 πŸ‘‘

Switches which take an argument don't care whether there is a space between the switch and the argument β€” she simply does not gatekeep. 🫢 If unspecified switches are found on the command-line, the user will be warned that an unknown option was given. (the audacity! the callout! πŸ’€)

The getopts() function returns true unless an invalid option was found.

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. (not me telling you this, the manpage is telling you this. fr fr.)

⚠️ Note that, if your code is running under the recommended use strict vars pragma, you will need to declare these package variables with our:
    our($opt_x, $opt_y);

For those of you who don't like additional global variables being created (valid!! lowkey same), 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. iconic behaviour honestly. πŸ“

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. 🌈


πŸ¦‹ "--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. (four whole arguments. she's thorough!!)
  • 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. so thoughtful. main character energy. πŸ‘‘

😭 Note that due to excessive paranoia, if $Getopt::Std::STANDARD_HELP_VERSION isn't true (the default is false), then the messages are printed on "STDERR", 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_VERSION to true. please bestie. set it. πŸ™

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. πŸ’–


and that's the whole page, bestie, we ate and left no crumbs πŸ’…βœ¨ this was perl v5.44.0, dated 2026-10-17, from the Perl Programmers Reference Guide β€” mwah, slay, periodt πŸŽ€πŸ¦‹πŸ’œ

πŸ“¦ where this page comes from
  • arch rolling: perl 5.44.0-1 Β· Artistic-1.0-Perl AND GPL-1.0-or-later
  • πŸ’– girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms