# phpman > perldoc > AppConfig::Getopt

## NAME
    [AppConfig::Getopt](https://www.chedong.com/phpMan.php/perldoc/AppConfig%3A%3AGetopt/markdown) - Perl5 module for processing command line arguments via delegation to
    [Getopt::Long](https://www.chedong.com/phpMan.php/perldoc/Getopt%3A%3ALong/markdown).

## SYNOPSIS
        use [AppConfig::Getopt](https://www.chedong.com/phpMan.php/perldoc/AppConfig%3A%3AGetopt/markdown);

        my $state  = [AppConfig::State](https://www.chedong.com/phpMan.php/perldoc/AppConfig%3A%3AState/markdown)->new(\%cfg);
        my $getopt = [AppConfig::Getopt](https://www.chedong.com/phpMan.php/perldoc/AppConfig%3A%3AGetopt/markdown)->new($state);

        $getopt->parse(\@args);            # read args

## OVERVIEW
    [AppConfig::Getopt](https://www.chedong.com/phpMan.php/perldoc/AppConfig%3A%3AGetopt/markdown) is a Perl5 module which delegates to Johan Vroman's [Getopt::Long](https://www.chedong.com/phpMan.php/perldoc/Getopt%3A%3ALong/markdown) module to
    parse command line arguments and update values in an [AppConfig::State](https://www.chedong.com/phpMan.php/perldoc/AppConfig%3A%3AState/markdown) object accordingly.

    [AppConfig::Getopt](https://www.chedong.com/phpMan.php/perldoc/AppConfig%3A%3AGetopt/markdown) is distributed as part of the AppConfig bundle.

## DESCRIPTION
  USING THE [AppConfig::Getopt](https://www.chedong.com/phpMan.php/perldoc/AppConfig%3A%3AGetopt/markdown) MODULE
    To import and use the [AppConfig::Getopt](https://www.chedong.com/phpMan.php/perldoc/AppConfig%3A%3AGetopt/markdown) module the following line should appear in your Perl
    script:

        use [AppConfig::Getopt](https://www.chedong.com/phpMan.php/perldoc/AppConfig%3A%3AGetopt/markdown);

    [AppConfig::Getopt](https://www.chedong.com/phpMan.php/perldoc/AppConfig%3A%3AGetopt/markdown) is used automatically if you use the AppConfig module and create an
    [AppConfig::Getopt](https://www.chedong.com/phpMan.php/perldoc/AppConfig%3A%3AGetopt/markdown) object through the getopt() method.

    [AppConfig::Getopt](https://www.chedong.com/phpMan.php/perldoc/AppConfig%3A%3AGetopt/markdown) is implemented using object-oriented methods. A new [AppConfig::Getopt](https://www.chedong.com/phpMan.php/perldoc/AppConfig%3A%3AGetopt/markdown) object
    is created and initialised using the new() method. This returns a reference to a new
    [AppConfig::Getopt](https://www.chedong.com/phpMan.php/perldoc/AppConfig%3A%3AGetopt/markdown) object. A reference to an [AppConfig::State](https://www.chedong.com/phpMan.php/perldoc/AppConfig%3A%3AState/markdown) object should be passed in as the
    first parameter:

        my $state  = [AppConfig::State](https://www.chedong.com/phpMan.php/perldoc/AppConfig%3A%3AState/markdown)->new();
        my $getopt = [AppConfig::Getopt](https://www.chedong.com/phpMan.php/perldoc/AppConfig%3A%3AGetopt/markdown)->new($state);

    This will create and return a reference to a new [AppConfig::Getopt](https://www.chedong.com/phpMan.php/perldoc/AppConfig%3A%3AGetopt/markdown) object.

  PARSING COMMAND LINE ARGUMENTS
    The "parse()" method is used to read a list of command line arguments and update the state
    accordingly.

    The first (non-list reference) parameters may contain a number of configuration strings to pass
    to [Getopt::Long::Configure](https://www.chedong.com/phpMan.php/perldoc/Getopt%3A%3ALong%3A%3AConfigure/markdown). A reference to a list of arguments may additionally be passed or
    @ARGV is used by default.

        $getopt->parse();                       # uses @ARGV
        $getopt->parse(\@myargs);
        $getopt->parse(qw(auto_abbrev debug));  # uses @ARGV
        $getopt->parse(qw(debug), \@myargs);

    See [Getopt::Long](https://www.chedong.com/phpMan.php/perldoc/Getopt%3A%3ALong/markdown) for details of the configuartion options available.

    A [Getopt::Long](https://www.chedong.com/phpMan.php/perldoc/Getopt%3A%3ALong/markdown) specification string is constructed for each variable defined in the
    [AppConfig::State](https://www.chedong.com/phpMan.php/perldoc/AppConfig%3A%3AState/markdown). This consists of the name, any aliases and the ARGS value for the variable.

    These specification string are then passed to [Getopt::Long](https://www.chedong.com/phpMan.php/perldoc/Getopt%3A%3ALong/markdown), the arguments are parsed and the
    values in the [AppConfig::State](https://www.chedong.com/phpMan.php/perldoc/AppConfig%3A%3AState/markdown) updated.

    See AppConfig for information about using the [AppConfig::Getopt](https://www.chedong.com/phpMan.php/perldoc/AppConfig%3A%3AGetopt/markdown) module via the getopt() method.

## AUTHOR
    Andy Wardley, <<abw@wardley.org>>

## COPYRIGHT
    Copyright (C) 1997-2007 Andy Wardley. All Rights Reserved.

    Copyright (C) 1997,1998 Canon Research Centre Europe Ltd.

    This module is free software; you can redistribute it and/or modify it under the same terms as
    Perl itself.

## ACKNOWLEDGMENTS
    Many thanks are due to Johan Vromans for the [Getopt::Long](https://www.chedong.com/phpMan.php/perldoc/Getopt%3A%3ALong/markdown) module. He was kind enough to offer
    assistance and access to early releases of his code to enable this module to be written.

## SEE ALSO
    AppConfig, [AppConfig::State](https://www.chedong.com/phpMan.php/perldoc/AppConfig%3A%3AState/markdown), [AppConfig::Args](https://www.chedong.com/phpMan.php/perldoc/AppConfig%3A%3AArgs/markdown), [Getopt::Long](https://www.chedong.com/phpMan.php/perldoc/Getopt%3A%3ALong/markdown)

