/usr/local/share/man/man3
NameSizeModeActions
App::Prove.3pm105080444editdlrm
App::Prove::State.3pm60050444editdlrm
App::Prove::State::Result.3pm56190444editdlrm
App::Prove::State::Result::Test.3pm50510444editdlrm
AppConfig.3pm352890444editdlrm
AppConfig::Args.3pm79920444editdlrm
AppConfig::CGI.3pm66090444editdlrm
AppConfig::File.3pm126140444editdlrm
AppConfig::Getopt.3pm74440444editdlrm
AppConfig::State.3pm249720444editdlrm
AppConfig::Sys.3pm66950444editdlrm
Archive::Tar.3pm440610444editdlrm
Archive::Tar::File.3pm110830444editdlrm
Archive::Zip.3pm699850444editdlrm
Archive::Zip::FAQ.3pm184370444editdlrm
Archive::Zip::MemberRead.3pm67340444editdlrm
Archive::Zip::Tree.3pm28750444editdlrm
B::COW.3pm51630444editdlrm
Canary::Stability.3pm37270444editdlrm
CDB_File.3pm143180444editdlrm
common::sense.3pm00444editdlrm
Compress::Raw::Bzip2.3pm134630444editdlrm
Compress::Raw::Zlib.3pm420820444editdlrm
Compress::Zlib.3pm387190444editdlrm
CPAN::Meta.3pm159230444editdlrm
CPAN::Meta::Converter.3pm65940444editdlrm
CPAN::Meta::Feature.3pm43220444editdlrm
CPAN::Meta::History.3pm78550444editdlrm
CPAN::Meta::History::Meta_1_0.3pm99730444editdlrm
CPAN::Meta::History::Meta_1_1.3pm124100444editdlrm
CPAN::Meta::History::Meta_1_2.3pm222240444editdlrm
CPAN::Meta::History::Meta_1_3.3pm239740444editdlrm
CPAN::Meta::History::Meta_1_4.3pm245650444editdlrm
CPAN::Meta::Merge.3pm52850444editdlrm
CPAN::Meta::Prereqs.3pm73800444editdlrm
CPAN::Meta::Requirements.3pm123080444editdlrm
CPAN::Meta::Spec.3pm455920444editdlrm
CPAN::Meta::Validator.3pm42150444editdlrm
CPAN::Meta::YAML.3pm42300444editdlrm
Crypt::OpenSSL::Random.3pm56340444editdlrm
Curses.3pm375800444editdlrm
Curses::UI.3pm156190444editdlrm
Curses::UI::Buttonbox.3pm89080444editdlrm
Curses::UI::Calendar.3pm82030444editdlrm
Curses::UI::Checkbox.3pm65090444editdlrm
Curses::UI::Color.3pm59030444editdlrm
Curses::UI::Common.3pm64980444editdlrm
Curses::UI::Container.3pm90410444editdlrm
Curses::UI::Dialog::Basic.3pm52130444editdlrm
Curses::UI::Dialog::Calendar.3pm47610444editdlrm
Curses::UI::Dialog::Dirbrowser.3pm53690444editdlrm
Curses::UI::Dialog::Error.3pm43070444editdlrm
Curses::UI::Dialog::Filebrowser.3pm68890444editdlrm
Curses::UI::Dialog::Progress.3pm57740444editdlrm
Curses::UI::Dialog::Question.3pm52770444editdlrm
Curses::UI::Dialog::Status.3pm47650444editdlrm
Curses::UI::Label.3pm73330444editdlrm
Curses::UI::Listbox.3pm119880444editdlrm
Curses::UI::Menubar.3pm81100444editdlrm
Curses::UI::Notebook.3pm91400444editdlrm
Curses::UI::PasswordEntry.3pm37430444editdlrm
Curses::UI::Popupmenu.3pm74310444editdlrm
Curses::UI::Progressbar.3pm58910444editdlrm
Curses::UI::Radiobuttonbox.3pm40690444editdlrm
Curses::UI::Searchable.3pm66680444editdlrm
Curses::UI::TextEditor.3pm141710444editdlrm
Curses::UI::TextEntry.3pm36230444editdlrm
Curses::UI::TextViewer.3pm36700444editdlrm
Curses::UI::Tutorial.3pm85550444editdlrm
Curses::UI::Widget.3pm256750444editdlrm
Curses::UI::Window.3pm50840444editdlrm
Cwd.3pm71830444editdlrm
Date::Format.3pm72910444editdlrm
Date::Language.3pm38090444editdlrm
Date::Language::Bulgarian.3pm36750444editdlrm
Date::Language::Hungarian.3pm30910444editdlrm
Date::Parse.3pm54020444editdlrm
Digest::SHA.3pm257590444editdlrm
Expect.3pm602290444editdlrm
ExtUtils::CBuilder.3pm119230444editdlrm
ExtUtils::CBuilder::Platform::Windows.3pm31170444editdlrm
ExtUtils::Command.3pm59420444editdlrm
ExtUtils::Command::MM.3pm57230444editdlrm
ExtUtils::Liblist.3pm126790444editdlrm
ExtUtils::MakeMaker.3pm793570444editdlrm
ExtUtils::MakeMaker::Config.3pm25870444editdlrm
ExtUtils::MakeMaker::FAQ.3pm268290444editdlrm
ExtUtils::MakeMaker::Locale.3pm111680444editdlrm
ExtUtils::MakeMaker::Tutorial.3pm83890444editdlrm
ExtUtils::Manifest.3pm119610444editdlrm
ExtUtils::Mkbootstrap.3pm34590444editdlrm
ExtUtils::Mksymlists.3pm66990444editdlrm
ExtUtils::MM.3pm28290444editdlrm
ExtUtils::MM_AIX.3pm30440444editdlrm
ExtUtils::MM_Any.3pm311290444editdlrm
ExtUtils::MM_BeOS.3pm27980444editdlrm
ExtUtils::MM_Cygwin.3pm35690444editdlrm
ExtUtils::MM_Darwin.3pm26880444editdlrm
ExtUtils::MM_DOS.3pm30210444editdlrm
ExtUtils::MM_MacOS.3pm29870444editdlrm
ExtUtils::MM_NW5.3pm32000444editdlrm
ExtUtils::MM_OS2.3pm28860444editdlrm
ExtUtils::MM_QNX.3pm29420444editdlrm
ExtUtils::MM_Unix.3pm214190444editdlrm
ExtUtils::MM_UWIN.3pm30510444editdlrm
ExtUtils::MM_VMS.3pm149000444editdlrm
ExtUtils::MM_VOS.3pm29260444editdlrm
ExtUtils::MM_Win32.3pm59190444editdlrm
ExtUtils::MM_Win95.3pm32760444editdlrm
ExtUtils::MY.3pm27640444editdlrm
ExtUtils::testlib.3pm26900444editdlrm
File::GlobMapper.3pm114470444editdlrm
File::HomeDir.3pm182120444editdlrm
File::HomeDir::Darwin.3pm32320444editdlrm
File::HomeDir::Darwin::Carbon.3pm35170444editdlrm
File::HomeDir::Darwin::Cocoa.3pm34460444editdlrm
File::HomeDir::Driver.3pm31010444editdlrm
File::HomeDir::FreeDesktop.3pm34870444editdlrm
File::HomeDir::MacOS9.3pm34990444editdlrm
File::HomeDir::Test.3pm35340444editdlrm
File::HomeDir::Unix.3pm36380444editdlrm
File::HomeDir::Windows.3pm48910444editdlrm
File::Path.3pm310300444editdlrm
File::Slurp.3pm236260444editdlrm
File::Spec.3pm137840444editdlrm
File::Spec::AmigaOS.3pm28260444editdlrm
File::Spec::Cygwin.3pm39570444editdlrm
File::Spec::Epoc.3pm32510444editdlrm
File::Spec::Functions.3pm37990444editdlrm
File::Spec::Mac.3pm186640444editdlrm
File::Spec::OS2.3pm31180444editdlrm
File::Spec::Unix.3pm98370444editdlrm
File::Spec::VMS.3pm63890444editdlrm
File::Spec::Win32.3pm64510444editdlrm
File::Temp.3pm367990444editdlrm
File::Which.3pm97460444editdlrm
Getopt::Long.3pm526470444editdlrm
HDB.3pm109470444editdlrm
HDB::CMDS.3pm188940444editdlrm
HDB::Encode.3pm78630444editdlrm
HDB::Object.3pm100570444editdlrm
HTML::AsSubs.3pm85860444editdlrm
HTML::Element.3pm707930444editdlrm
HTML::Element::traverse.3pm159840444editdlrm
HTML::Form.3pm281580444editdlrm
HTML::Parse.3pm82770444editdlrm
HTML::Tree.3pm99820444editdlrm
HTML::Tree::AboutObjects.3pm379180444editdlrm
HTML::Tree::AboutTrees.3pm585340444editdlrm
HTML::Tree::Scanning.3pm343850444editdlrm
HTML::TreeBuilder.3pm301380444editdlrm
HTTP::Tiny.3pm277090444editdlrm
IO::AtomicFile.3pm53810444editdlrm
IO::Compress::Base.3pm35060444editdlrm
IO::Compress::Bzip2.3pm232600444editdlrm
IO::Compress::Deflate.3pm267680444editdlrm
IO::Compress::FAQ.3pm267180444editdlrm
IO::Compress::Gzip.3pm344890444editdlrm
IO::Compress::RawDeflate.3pm271340444editdlrm
IO::Compress::Zip.3pm408700444editdlrm
IO::InnerFile.3pm60350444editdlrm
IO::Lines.3pm37830444editdlrm
IO::Pty.3pm85790444editdlrm
IO::Scalar.3pm106790444editdlrm
IO::ScalarArray.3pm105280444editdlrm
IO::Stringy.3pm40490444editdlrm
IO::Tty.3pm83480444editdlrm
IO::Tty::Constant.3pm100120444editdlrm
IO::Uncompress::AnyInflate.3pm328000444editdlrm
IO::Uncompress::AnyUncompress.3pm307670444editdlrm
IO::Uncompress::Base.3pm35180444editdlrm
IO::Uncompress::Bunzip2.3pm291710444editdlrm
IO::Uncompress::Gunzip.3pm317190444editdlrm
IO::Uncompress::Inflate.3pm299150444editdlrm
IO::Uncompress::RawInflate.3pm295630444editdlrm
IO::Uncompress::Unzip.3pm312790444editdlrm
IO::Wrap.3pm106640444editdlrm
IO::WrapTie.3pm149870444editdlrm
JSON::PP.3pm500800444editdlrm
JSON::PP::Boolean.3pm26670444editdlrm
JSON::Syck.3pm80940444editdlrm
JSON::XS.3pm890370444editdlrm
JSON::XS::Boolean.3pm28570444editdlrm
lib::core::only.3pm56470444editdlrm
local::lib.3pm313900444editdlrm
LWP.3pm285060444editdlrm
LWP::Authen::Ntlm.3pm74890444editdlrm
LWP::ConnCache.3pm99670444editdlrm
LWP::Debug.3pm56080444editdlrm
LWP::MemberMixin.3pm48210444editdlrm
LWP::Protocol.3pm83500444editdlrm
LWP::Protocol::https.3pm56840444editdlrm
LWP::RobotUA.3pm90220444editdlrm
LWP::Simple.3pm90160444editdlrm
LWP::UserAgent.3pm481560444editdlrm
lwpcook.3pm148380444editdlrm
lwptut.3pm324410444editdlrm
Module::Build.3pm445630444editdlrm
Module::Build::API.3pm892670444editdlrm
Module::Build::Authoring.3pm173630444editdlrm
Module::Build::Base.3pm51570444editdlrm
Module::Build::Bundling.3pm99990444editdlrm
Module::Build::Compat.3pm108850444editdlrm
Module::Build::ConfigData.3pm73880444editdlrm
Module::Build::Cookbook.3pm259460444editdlrm
Module::Build::Notes.3pm46900444editdlrm
Module::Build::Platform::aix.3pm44720444editdlrm
Module::Build::Platform::cygwin.3pm45050444editdlrm
Module::Build::Platform::darwin.3pm44910444editdlrm
Module::Build::Platform::Default.3pm44900444editdlrm
Module::Build::Platform::MacOS.3pm53980444editdlrm
Module::Build::Platform::os2.3pm44740444editdlrm
Module::Build::Platform::Unix.3pm44810444editdlrm
Module::Build::Platform::VMS.3pm78850444editdlrm
Module::Build::Platform::VOS.3pm44770444editdlrm
Module::Build::Platform::Windows.3pm45290444editdlrm
Module::Build::PPMMaker.3pm48860444editdlrm
Mozilla::CA.3pm35710444editdlrm
Net::CIDR::Lite.3pm95620444editdlrm
Net::Cmd.3pm115450444editdlrm
Net::Config.3pm81000444editdlrm
Net::Domain.3pm38350444editdlrm
Net::FTP.3pm273410444editdlrm
Net::FTP::dataconn.3pm39790444editdlrm
Net::HTTP.3pm163750444editdlrm
Net::HTTP::NB.3pm53940444editdlrm
Net::HTTPS.3pm54380444editdlrm
Net::IP.3pm276970444editdlrm
Net::libnetFAQ.3pm147460444editdlrm
Net::Netrc.3pm67290444editdlrm
Net::NNTP.3pm231930444editdlrm
Net::POP3.3pm122590444editdlrm
Net::SMTP.3pm188800444editdlrm
Net::SSLeay.3pm3493500444editdlrm
Net::SSLeay::Handle.3pm91270444editdlrm
Net::Time.3pm45240444editdlrm
ok.3pm28510444editdlrm
Parse::CPAN::Meta.3pm101870444editdlrm
POD2::DE::local::lib.3pm228790444editdlrm
POD2::PT_BR::local::lib.3pm227620444editdlrm
Socket.3pm340780444editdlrm
Sub::Identify.3pm50870444editdlrm
SUPER.3pm73940444editdlrm
Switch.3pm190140444editdlrm
TAP::Base.3pm34010444editdlrm
TAP::Formatter::Base.3pm62330444editdlrm
TAP::Formatter::Color.3pm37170444editdlrm
TAP::Formatter::Console.3pm27220444editdlrm
TAP::Formatter::Console::ParallelSession.3pm30650444editdlrm
TAP::Formatter::Console::Session.3pm28320444editdlrm
TAP::Formatter::File.3pm26930444editdlrm
TAP::Formatter::File::Session.3pm28470444editdlrm
TAP::Formatter::Session.3pm36030444editdlrm
TAP::Harness.3pm213000444editdlrm
TAP::Harness::Beyond.3pm191180444editdlrm
TAP::Harness::Env.3pm54670444editdlrm
TAP::Object.3pm44970444editdlrm
TAP::Parser.3pm422100444editdlrm
TAP::Parser::Aggregator.3pm80230444editdlrm
TAP::Parser::Grammar.3pm86470444editdlrm
TAP::Parser::Iterator.3pm49930444editdlrm
TAP::Parser::Iterator::Array.3pm37710444editdlrm
TAP::Parser::Iterator::Process.3pm46010444editdlrm
TAP::Parser::Iterator::Stream.3pm37120444editdlrm
TAP::Parser::IteratorFactory.3pm69040444editdlrm
TAP::Parser::Multiplexer.3pm46460444editdlrm
TAP::Parser::Result.3pm75120444editdlrm
TAP::Parser::Result::Bailout.3pm32930444editdlrm
TAP::Parser::Result::Comment.3pm31180444editdlrm
TAP::Parser::Result::Plan.3pm41730444editdlrm
TAP::Parser::Result::Pragma.3pm30730444editdlrm
TAP::Parser::Result::Test.3pm71140444editdlrm
TAP::Parser::Result::Unknown.3pm29730444editdlrm
TAP::Parser::Result::Version.3pm31540444editdlrm
TAP::Parser::Result::YAML.3pm30860444editdlrm
TAP::Parser::ResultFactory.3pm55230444editdlrm
TAP::Parser::Scheduler.3pm81130444editdlrm
TAP::Parser::Scheduler::Job.3pm43010444editdlrm
TAP::Parser::Scheduler::Spinner.3pm33460444editdlrm
TAP::Parser::Source.3pm81700444editdlrm
TAP::Parser::SourceHandler.3pm75590444editdlrm
TAP::Parser::SourceHandler::Executable.3pm52970444editdlrm
TAP::Parser::SourceHandler::File.3pm45670444editdlrm
TAP::Parser::SourceHandler::Handle.3pm44250444editdlrm
TAP::Parser::SourceHandler::Perl.3pm62620444editdlrm
TAP::Parser::SourceHandler::RawTAP.3pm44340444editdlrm
TAP::Parser::YAMLish::Reader.3pm39950444editdlrm
TAP::Parser::YAMLish::Writer.3pm48790444editdlrm
Template.3pm279090444editdlrm
Template::Base.3pm81490444editdlrm
Template::Config.3pm86870444editdlrm
Template::Constants.3pm78150444editdlrm
Template::Context.3pm266370444editdlrm
Template::Directive.3pm48210444editdlrm
Template::Document.3pm118290444editdlrm
Template::Exception.3pm67630444editdlrm
Template::FAQ.3pm145640444editdlrm
Template::Filters.3pm98170444editdlrm
Template::Grammar.3pm50390444editdlrm
Template::Iterator.3pm114130444editdlrm
Template::Manual.3pm63170444editdlrm
Template::Manual::Config.3pm795040444editdlrm
Template::Manual::Credits.3pm82460444editdlrm
Template::Manual::Directives.3pm772930444editdlrm
Template::Manual::Filters.3pm208100444editdlrm
Template::Manual::Internals.3pm234330444editdlrm
Template::Manual::Intro.3pm140920444editdlrm
Template::Manual::Plugins.3pm137800444editdlrm
Template::Manual::Syntax.3pm145490444editdlrm
Template::Manual::Variables.3pm331100444editdlrm
Template::Manual::Views.3pm259530444editdlrm
Template::Manual::VMethods.3pm281950444editdlrm
Template::Modules.3pm98270444editdlrm
Template::Namespace::Constants.3pm60020444editdlrm
Template::Parser.3pm99170444editdlrm
Template::Plugin.3pm109370444editdlrm
Template::Plugin::Assert.3pm54460444editdlrm
Template::Plugin::CGI.3pm61880444editdlrm
Template::Plugin::Datafile.3pm66010444editdlrm
Template::Plugin::Date.3pm95380444editdlrm
Template::Plugin::Directory.3pm119790444editdlrm
Template::Plugin::Dumper.3pm60780444editdlrm
Template::Plugin::File.3pm130090444editdlrm
Template::Plugin::Filter.3pm129360444editdlrm
Template::Plugin::Format.3pm48950444editdlrm
Template::Plugin::HTML.3pm78230444editdlrm
Template::Plugin::Image.3pm119500444editdlrm
Template::Plugin::Iterator.3pm50610444editdlrm
Template::Plugin::Math.3pm66230444editdlrm
Template::Plugin::Pod.3pm47840444editdlrm
Template::Plugin::Procedural.3pm56310444editdlrm
Template::Plugin::Scalar.3pm50320444editdlrm
Template::Plugin::String.3pm172630444editdlrm
Template::Plugin::Table.3pm111450444editdlrm
Template::Plugin::URL.3pm80800444editdlrm
Template::Plugin::View.3pm54790444editdlrm
Template::Plugin::Wrap.3pm64330444editdlrm
Template::Plugins.3pm97330444editdlrm
Template::Provider.3pm146780444editdlrm
Template::Service.3pm148130444editdlrm
Template::Stash.3pm119830444editdlrm
Template::Stash::Context.3pm71300444editdlrm
Template::Stash::XS.3pm66440444editdlrm
Template::Test.3pm155240444editdlrm
Template::Toolkit.3pm92270444editdlrm
Template::Tools.3pm50010444editdlrm
Template::Tools::tpage.3pm58060444editdlrm
Template::Tools::ttree.3pm165670444editdlrm
Template::Tutorial.3pm45660444editdlrm
Template::Tutorial::Datafile.3pm195390444editdlrm
Template::Tutorial::Web.3pm341180444editdlrm
Template::View.3pm126180444editdlrm
Template::VMethods.3pm46880444editdlrm
Term::ReadKey.3pm130290444editdlrm
Test2.3pm95560444editdlrm
Test2::API.3pm304240444editdlrm
Test2::API::Breakage.3pm49880444editdlrm
Test2::API::Context.3pm175740444editdlrm
Test2::API::Instance.3pm124040444editdlrm
Test2::API::Stack.3pm65680444editdlrm
Test2::Event.3pm91890444editdlrm
Test2::Event::Bail.3pm34700444editdlrm
Test2::Event::Diag.3pm33380444editdlrm
Test2::Event::Exception.3pm35200444editdlrm
Test2::Event::Generic.3pm76620444editdlrm
Test2::Event::Info.3pm42610444editdlrm
Test2::Event::Note.3pm33230444editdlrm
Test2::Event::Ok.3pm42550444editdlrm
Test2::Event::Plan.3pm39070444editdlrm
Test2::Event::Skip.3pm36650444editdlrm
Test2::Event::Subtest.3pm35730444editdlrm
Test2::Event::Waiting.3pm31070444editdlrm
Test2::Formatter.3pm52080444editdlrm
Test2::Formatter::TAP.3pm92550444editdlrm
Test2::Hub.3pm167550444editdlrm
Test2::Hub::Interceptor.3pm29370444editdlrm
Test2::Hub::Interceptor::Terminator.3pm29800444editdlrm
Test2::Hub::Subtest.3pm38030444editdlrm
Test2::IPC.3pm33240444editdlrm
Test2::IPC::Driver.3pm95120444editdlrm
Test2::IPC::Driver::Files.3pm38220444editdlrm
Test2::Transition.3pm184060444editdlrm
Test2::Util.3pm51230444editdlrm
Test2::Util::ExternalMeta.3pm55940444editdlrm
Test2::Util::HashBase.3pm74630444editdlrm
Test2::Util::Trace.3pm55770444editdlrm
Test::Builder.3pm269150444editdlrm
Test::Builder::Formatter.3pm36560444editdlrm
Test::Builder::IO::Scalar.3pm97400444editdlrm
Test::Builder::Module.3pm55670444editdlrm
Test::Builder::Tester.3pm115500444editdlrm
Test::Builder::Tester::Color.3pm31310444editdlrm
Test::Builder::TodoDiag.3pm31290444editdlrm
Test::Fatal.3pm93030444editdlrm
Test::HACKING.3pm92530444editdlrm
Test::Harness.3pm110280444editdlrm
Test::LeakTrace.3pm100220444editdlrm
Test::LeakTrace::JA.3pm123280444editdlrm
Test::LeakTrace::Script.3pm51400444editdlrm
Test::MockModule.3pm108180444editdlrm
Test::More.3pm432150444editdlrm
Test::More::UTF8.3pm36020444editdlrm
Test::RequiresInternet.3pm39440444editdlrm
Test::Simple.3pm91190444editdlrm
Test::Tester.3pm157810444editdlrm
Test::Tester::Capture.3pm29020444editdlrm
Test::Tester::CaptureRunner.3pm26730444editdlrm
Test::Tutorial.3pm242610444editdlrm
Test::use::ok.3pm38410444editdlrm
Test::Warnings.3pm142310444editdlrm
Text::Glob.3pm61060444editdlrm
Text::Template.3pm654990444editdlrm
Text::Template::Preprocess.3pm62700444editdlrm
Time::Zone.3pm34130444editdlrm
TimeDate.3pm23970444editdlrm
Try::Tiny.3pm203430444editdlrm
Types::Serialiser.3pm114730444editdlrm
Types::Serialiser::Error.3pm27050444editdlrm
version.3pm139370444editdlrm
version::Internals.3pm302870444editdlrm
WWW::Mechanize.3pm681960444editdlrm
WWW::Mechanize::Cookbook.3pm71590444editdlrm
WWW::Mechanize::Examples.3pm224900444editdlrm
WWW::Mechanize::FAQ.3pm243590444editdlrm
WWW::Mechanize::Image.3pm64900444editdlrm
WWW::Mechanize::Link.3pm65180444editdlrm
XML::NamespaceSupport.3pm130520444editdlrm
XML::Parser.3pm262960444editdlrm
XML::Parser::Expat.3pm267990444editdlrm
XML::Parser::Style::Debug.3pm44080444editdlrm
XML::Parser::Style::Objects.3pm48880444editdlrm
XML::Parser::Style::Stream.3pm59250444editdlrm
XML::Parser::Style::Subs.3pm48630444editdlrm
XML::Parser::Style::Tree.3pm55290444editdlrm
XML::SAX.3pm92290444editdlrm
XML::SAX::Base.3pm137040444editdlrm
XML::SAX::BuildSAXBase.3pm137000444editdlrm
XML::SAX::DocumentLocator.3pm52390444editdlrm
XML::SAX::Exception.3pm56220444editdlrm
XML::SAX::Expat.3pm64040444editdlrm
XML::SAX::Intro.3pm202200444editdlrm
XML::SAX::ParserFactory.3pm79190444editdlrm
XML::SAX::PurePerl.3pm61720444editdlrm
XML::SAX::PurePerl::Reader.3pm41030444editdlrm
XML::Simple.3pm655890444editdlrm
XML::Simple::FAQ.3pm272230444editdlrm
YAML.3pm299800444editdlrm
YAML::Any.3pm74870444editdlrm
YAML::Dumper.3pm47760444editdlrm
YAML::Dumper::Base.3pm46420444editdlrm
YAML::Error.3pm46810444editdlrm
YAML::Loader.3pm47660444editdlrm
YAML::Loader::Base.3pm46420444editdlrm
YAML::Marshall.3pm46400444editdlrm
YAML::Node.3pm67430444editdlrm
YAML::Syck.3pm108060444editdlrm
YAML::Tag.3pm44990444editdlrm
YAML::Types.3pm47160444editdlrm
Edit: /usr/local/share/man/man3/Getopt::Long.3pm (52647B)
.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{ . if \nF \{ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "Getopt::Long 3" .TH Getopt::Long 3 "2016-06-09" "perl v5.16.3" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" Getopt::Long \- Extended processing of command line options .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 8 \& use Getopt::Long; \& my $data = "file.dat"; \& my $length = 24; \& my $verbose; \& GetOptions ("length=i" => \e$length, # numeric \& "file=s" => \e$data, # string \& "verbose" => \e$verbose) # flag \& or die("Error in command line arguments\en"); .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" The Getopt::Long module implements an extended getopt function called \&\fIGetOptions()\fR. It parses the command line from \f(CW@ARGV\fR, recognizing and removing specified options and their possible values. .PP This function adheres to the \s-1POSIX\s0 syntax for command line options, with \s-1GNU\s0 extensions. In general, this means that options have long names instead of single letters, and are introduced with a double dash \*(L"\-\-\*(R". Support for bundling of command line options, as was the case with the more traditional single-letter approach, is provided but not enabled by default. .SH "Command Line Options, an Introduction" .IX Header "Command Line Options, an Introduction" Command line operated programs traditionally take their arguments from the command line, for example filenames or other information that the program needs to know. Besides arguments, these programs often take command line \fIoptions\fR as well. Options are not necessary for the program to work, hence the name 'option', but are used to modify its default behaviour. For example, a program could do its job quietly, but with a suitable option it could provide verbose information about what it did. .PP Command line options come in several flavours. Historically, they are preceded by a single dash \f(CW\*(C`\-\*(C'\fR, and consist of a single letter. .PP .Vb 1 \& \-l \-a \-c .Ve .PP Usually, these single-character options can be bundled: .PP .Vb 1 \& \-lac .Ve .PP Options can have values, the value is placed after the option character. Sometimes with whitespace in between, sometimes not: .PP .Vb 1 \& \-s 24 \-s24 .Ve .PP Due to the very cryptic nature of these options, another style was developed that used long names. So instead of a cryptic \f(CW\*(C`\-l\*(C'\fR one could use the more descriptive \f(CW\*(C`\-\-long\*(C'\fR. To distinguish between a bundle of single-character options and a long one, two dashes are used to precede the option name. Early implementations of long options used a plus \f(CW\*(C`+\*(C'\fR instead. Also, option values could be specified either like .PP .Vb 1 \& \-\-size=24 .Ve .PP or .PP .Vb 1 \& \-\-size 24 .Ve .PP The \f(CW\*(C`+\*(C'\fR form is now obsolete and strongly deprecated. .SH "Getting Started with Getopt::Long" .IX Header "Getting Started with Getopt::Long" Getopt::Long is the Perl5 successor of \f(CW\*(C`newgetopt.pl\*(C'\fR. This was the first Perl module that provided support for handling the new style of command line options, in particular long option names, hence the Perl5 name Getopt::Long. This module also supports single-character options and bundling. .PP To use Getopt::Long from a Perl program, you must include the following line in your Perl program: .PP .Vb 1 \& use Getopt::Long; .Ve .PP This will load the core of the Getopt::Long module and prepare your program for using it. Most of the actual Getopt::Long code is not loaded until you really call one of its functions. .PP In the default configuration, options names may be abbreviated to uniqueness, case does not matter, and a single dash is sufficient, even for long option names. Also, options may be placed between non-option arguments. See \*(L"Configuring Getopt::Long\*(R" for more details on how to configure Getopt::Long. .SS "Simple options" .IX Subsection "Simple options" The most simple options are the ones that take no values. Their mere presence on the command line enables the option. Popular examples are: .PP .Vb 1 \& \-\-all \-\-verbose \-\-quiet \-\-debug .Ve .PP Handling simple options is straightforward: .PP .Vb 3 \& my $verbose = \*(Aq\*(Aq; # option variable with default value (false) \& my $all = \*(Aq\*(Aq; # option variable with default value (false) \& GetOptions (\*(Aqverbose\*(Aq => \e$verbose, \*(Aqall\*(Aq => \e$all); .Ve .PP The call to \fIGetOptions()\fR parses the command line arguments that are present in \f(CW@ARGV\fR and sets the option variable to the value \f(CW1\fR if the option did occur on the command line. Otherwise, the option variable is not touched. Setting the option value to true is often called \fIenabling\fR the option. .PP The option name as specified to the \fIGetOptions()\fR function is called the option \fIspecification\fR. Later we'll see that this specification can contain more than just the option name. The reference to the variable is called the option \fIdestination\fR. .PP \&\fIGetOptions()\fR will return a true value if the command line could be processed successfully. Otherwise, it will write error messages using \&\fIdie()\fR and \fIwarn()\fR, and return a false result. .SS "A little bit less simple options" .IX Subsection "A little bit less simple options" Getopt::Long supports two useful variants of simple options: \&\fInegatable\fR options and \fIincremental\fR options. .PP A negatable option is specified with an exclamation mark \f(CW\*(C`!\*(C'\fR after the option name: .PP .Vb 2 \& my $verbose = \*(Aq\*(Aq; # option variable with default value (false) \& GetOptions (\*(Aqverbose!\*(Aq => \e$verbose); .Ve .PP Now, using \f(CW\*(C`\-\-verbose\*(C'\fR on the command line will enable \f(CW$verbose\fR, as expected. But it is also allowed to use \f(CW\*(C`\-\-noverbose\*(C'\fR, which will disable \f(CW$verbose\fR by setting its value to \f(CW0\fR. Using a suitable default value, the program can find out whether \f(CW$verbose\fR is false by default, or disabled by using \f(CW\*(C`\-\-noverbose\*(C'\fR. .PP An incremental option is specified with a plus \f(CW\*(C`+\*(C'\fR after the option name: .PP .Vb 2 \& my $verbose = \*(Aq\*(Aq; # option variable with default value (false) \& GetOptions (\*(Aqverbose+\*(Aq => \e$verbose); .Ve .PP Using \f(CW\*(C`\-\-verbose\*(C'\fR on the command line will increment the value of \&\f(CW$verbose\fR. This way the program can keep track of how many times the option occurred on the command line. For example, each occurrence of \&\f(CW\*(C`\-\-verbose\*(C'\fR could increase the verbosity level of the program. .SS "Mixing command line option with other arguments" .IX Subsection "Mixing command line option with other arguments" Usually programs take command line options as well as other arguments, for example, file names. It is good practice to always specify the options first, and the other arguments last. Getopt::Long will, however, allow the options and arguments to be mixed and 'filter out' all the options before passing the rest of the arguments to the program. To stop Getopt::Long from processing further arguments, insert a double dash \f(CW\*(C`\-\-\*(C'\fR on the command line: .PP .Vb 1 \& \-\-size 24 \-\- \-\-all .Ve .PP In this example, \f(CW\*(C`\-\-all\*(C'\fR will \fInot\fR be treated as an option, but passed to the program unharmed, in \f(CW@ARGV\fR. .SS "Options with values" .IX Subsection "Options with values" For options that take values it must be specified whether the option value is required or not, and what kind of value the option expects. .PP Three kinds of values are supported: integer numbers, floating point numbers, and strings. .PP If the option value is required, Getopt::Long will take the command line argument that follows the option and assign this to the option variable. If, however, the option value is specified as optional, this will only be done if that value does not look like a valid command line option itself. .PP .Vb 2 \& my $tag = \*(Aq\*(Aq; # option variable with default value \& GetOptions (\*(Aqtag=s\*(Aq => \e$tag); .Ve .PP In the option specification, the option name is followed by an equals sign \f(CW\*(C`=\*(C'\fR and the letter \f(CW\*(C`s\*(C'\fR. The equals sign indicates that this option requires a value. The letter \f(CW\*(C`s\*(C'\fR indicates that this value is an arbitrary string. Other possible value types are \f(CW\*(C`i\*(C'\fR for integer values, and \f(CW\*(C`f\*(C'\fR for floating point values. Using a colon \f(CW\*(C`:\*(C'\fR instead of the equals sign indicates that the option value is optional. In this case, if no suitable value is supplied, string valued options get an empty string \f(CW\*(Aq\*(Aq\fR assigned, while numeric options are set to \f(CW0\fR. .SS "Options with multiple values" .IX Subsection "Options with multiple values" Options sometimes take several values. For example, a program could use multiple directories to search for library files: .PP .Vb 1 \& \-\-library lib/stdlib \-\-library lib/extlib .Ve .PP To accomplish this behaviour, simply specify an array reference as the destination for the option: .PP .Vb 1 \& GetOptions ("library=s" => \e@libfiles); .Ve .PP Alternatively, you can specify that the option can have multiple values by adding a \*(L"@\*(R", and pass a scalar reference as the destination: .PP .Vb 1 \& GetOptions ("library=s@" => \e$libfiles); .Ve .PP Used with the example above, \f(CW@libfiles\fR (or \f(CW@$libfiles\fR) would contain two strings upon completion: \f(CW"lib/stdlib"\fR and \&\f(CW"lib/extlib"\fR, in that order. It is also possible to specify that only integer or floating point numbers are acceptable values. .PP Often it is useful to allow comma-separated lists of values as well as multiple occurrences of the options. This is easy using Perl's \fIsplit()\fR and \fIjoin()\fR operators: .PP .Vb 2 \& GetOptions ("library=s" => \e@libfiles); \& @libfiles = split(/,/,join(\*(Aq,\*(Aq,@libfiles)); .Ve .PP Of course, it is important to choose the right separator string for each purpose. .PP Warning: What follows is an experimental feature. .PP Options can take multiple values at once, for example .PP .Vb 1 \& \-\-coordinates 52.2 16.4 \-\-rgbcolor 255 255 149 .Ve .PP This can be accomplished by adding a repeat specifier to the option specification. Repeat specifiers are very similar to the \f(CW\*(C`{...}\*(C'\fR repeat specifiers that can be used with regular expression patterns. For example, the above command line would be handled as follows: .PP .Vb 1 \& GetOptions(\*(Aqcoordinates=f{2}\*(Aq => \e@coor, \*(Aqrgbcolor=i{3}\*(Aq => \e@color); .Ve .PP The destination for the option must be an array or array reference. .PP It is also possible to specify the minimal and maximal number of arguments an option takes. \f(CW\*(C`foo=s{2,4}\*(C'\fR indicates an option that takes at least two and at most 4 arguments. \f(CW\*(C`foo=s{1,}\*(C'\fR indicates one or more values; \f(CW\*(C`foo:s{,}\*(C'\fR indicates zero or more option values. .SS "Options with hash values" .IX Subsection "Options with hash values" If the option destination is a reference to a hash, the option will take, as value, strings of the form \fIkey\fR\f(CW\*(C`=\*(C'\fR\fIvalue\fR. The value will be stored with the specified key in the hash. .PP .Vb 1 \& GetOptions ("define=s" => \e%defines); .Ve .PP Alternatively you can use: .PP .Vb 1 \& GetOptions ("define=s%" => \e$defines); .Ve .PP When used with command line options: .PP .Vb 1 \& \-\-define os=linux \-\-define vendor=redhat .Ve .PP the hash \f(CW%defines\fR (or \f(CW%$defines\fR) will contain two keys, \f(CW"os"\fR with value \f(CW"linux"\fR and \f(CW"vendor"\fR with value \f(CW"redhat"\fR. It is also possible to specify that only integer or floating point numbers are acceptable values. The keys are always taken to be strings. .SS "User-defined subroutines to handle options" .IX Subsection "User-defined subroutines to handle options" Ultimate control over what should be done when (actually: each time) an option is encountered on the command line can be achieved by designating a reference to a subroutine (or an anonymous subroutine) as the option destination. When \fIGetOptions()\fR encounters the option, it will call the subroutine with two or three arguments. The first argument is the name of the option. (Actually, it is an object that stringifies to the name of the option.) For a scalar or array destination, the second argument is the value to be stored. For a hash destination, the second argument is the key to the hash, and the third argument the value to be stored. It is up to the subroutine to store the value, or do whatever it thinks is appropriate. .PP A trivial application of this mechanism is to implement options that are related to each other. For example: .PP .Vb 3 \& my $verbose = \*(Aq\*(Aq; # option variable with default value (false) \& GetOptions (\*(Aqverbose\*(Aq => \e$verbose, \& \*(Aqquiet\*(Aq => sub { $verbose = 0 }); .Ve .PP Here \f(CW\*(C`\-\-verbose\*(C'\fR and \f(CW\*(C`\-\-quiet\*(C'\fR control the same variable \&\f(CW$verbose\fR, but with opposite values. .PP If the subroutine needs to signal an error, it should call \fIdie()\fR with the desired error message as its argument. \fIGetOptions()\fR will catch the \&\fIdie()\fR, issue the error message, and record that an error result must be returned upon completion. .PP If the text of the error message starts with an exclamation mark \f(CW\*(C`!\*(C'\fR it is interpreted specially by \fIGetOptions()\fR. There is currently one special command implemented: \f(CW\*(C`die("!FINISH")\*(C'\fR will cause \fIGetOptions()\fR to stop processing options, as if it encountered a double dash \f(CW\*(C`\-\-\*(C'\fR. .PP In version 2.37 the first argument to the callback function was changed from string to object. This was done to make room for extensions and more detailed control. The object stringifies to the option name so this change should not introduce compatibility problems. .PP Here is an example of how to access the option name and value from within a subroutine: .PP .Vb 5 \& GetOptions (\*(Aqopt=i\*(Aq => \e&handler); \& sub handler { \& my ($opt_name, $opt_value) = @_; \& print("Option name is $opt_name and value is $opt_value\en"); \& } .Ve .SS "Options with multiple names" .IX Subsection "Options with multiple names" Often it is user friendly to supply alternate mnemonic names for options. For example \f(CW\*(C`\-\-height\*(C'\fR could be an alternate name for \&\f(CW\*(C`\-\-length\*(C'\fR. Alternate names can be included in the option specification, separated by vertical bar \f(CW\*(C`|\*(C'\fR characters. To implement the above example: .PP .Vb 1 \& GetOptions (\*(Aqlength|height=f\*(Aq => \e$length); .Ve .PP The first name is called the \fIprimary\fR name, the other names are called \fIaliases\fR. When using a hash to store options, the key will always be the primary name. .PP Multiple alternate names are possible. .SS "Case and abbreviations" .IX Subsection "Case and abbreviations" Without additional configuration, \fIGetOptions()\fR will ignore the case of option names, and allow the options to be abbreviated to uniqueness. .PP .Vb 1 \& GetOptions (\*(Aqlength|height=f\*(Aq => \e$length, "head" => \e$head); .Ve .PP This call will allow \f(CW\*(C`\-\-l\*(C'\fR and \f(CW\*(C`\-\-L\*(C'\fR for the length option, but requires a least \f(CW\*(C`\-\-hea\*(C'\fR and \f(CW\*(C`\-\-hei\*(C'\fR for the head and height options. .SS "Summary of Option Specifications" .IX Subsection "Summary of Option Specifications" Each option specifier consists of two parts: the name specification and the argument specification. .PP The name specification contains the name of the option, optionally followed by a list of alternative names separated by vertical bar characters. .PP .Vb 2 \& length option name is "length" \& length|size|l name is "length", aliases are "size" and "l" .Ve .PP The argument specification is optional. If omitted, the option is considered boolean, a value of 1 will be assigned when the option is used on the command line. .PP The argument specification can be .IP "!" 4 The option does not take an argument and may be negated by prefixing it with \*(L"no\*(R" or \*(L"no\-\*(R". E.g. \f(CW"foo!"\fR will allow \f(CW\*(C`\-\-foo\*(C'\fR (a value of 1 will be assigned) as well as \f(CW\*(C`\-\-nofoo\*(C'\fR and \f(CW\*(C`\-\-no\-foo\*(C'\fR (a value of 0 will be assigned). If the option has aliases, this applies to the aliases as well. .Sp Using negation on a single letter option when bundling is in effect is pointless and will result in a warning. .IP "+" 4 The option does not take an argument and will be incremented by 1 every time it appears on the command line. E.g. \f(CW"more+"\fR, when used with \f(CW\*(C`\-\-more \-\-more \-\-more\*(C'\fR, will increment the value three times, resulting in a value of 3 (provided it was 0 or undefined at first). .Sp The \f(CW\*(C`+\*(C'\fR specifier is ignored if the option destination is not a scalar. .IP "= \fItype\fR [ \fIdesttype\fR ] [ \fIrepeat\fR ]" 4 .IX Item "= type [ desttype ] [ repeat ]" The option requires an argument of the given type. Supported types are: .RS 4 .IP "s" 4 .IX Item "s" String. An arbitrary sequence of characters. It is valid for the argument to start with \f(CW\*(C`\-\*(C'\fR or \f(CW\*(C`\-\-\*(C'\fR. .IP "i" 4 .IX Item "i" Integer. An optional leading plus or minus sign, followed by a sequence of digits. .IP "o" 4 .IX Item "o" Extended integer, Perl style. This can be either an optional leading plus or minus sign, followed by a sequence of digits, or an octal string (a zero, optionally followed by '0', '1', .. '7'), or a hexadecimal string (\f(CW\*(C`0x\*(C'\fR followed by '0' .. '9', 'a' .. 'f', case insensitive), or a binary string (\f(CW\*(C`0b\*(C'\fR followed by a series of '0' and '1'). .IP "f" 4 .IX Item "f" Real number. For example \f(CW3.14\fR, \f(CW\*(C`\-6.23E24\*(C'\fR and so on. .RE .RS 4 .Sp The \fIdesttype\fR can be \f(CW\*(C`@\*(C'\fR or \f(CW\*(C`%\*(C'\fR to specify that the option is list or a hash valued. This is only needed when the destination for the option value is not otherwise specified. It should be omitted when not needed. .Sp The \fIrepeat\fR specifies the number of values this option takes per occurrence on the command line. It has the format \f(CW\*(C`{\*(C'\fR [ \fImin\fR ] [ \f(CW\*(C`,\*(C'\fR [ \fImax\fR ] ] \f(CW\*(C`}\*(C'\fR. .Sp \&\fImin\fR denotes the minimal number of arguments. It defaults to 1 for options with \f(CW\*(C`=\*(C'\fR and to 0 for options with \f(CW\*(C`:\*(C'\fR, see below. Note that \&\fImin\fR overrules the \f(CW\*(C`=\*(C'\fR / \f(CW\*(C`:\*(C'\fR semantics. .Sp \&\fImax\fR denotes the maximum number of arguments. It must be at least \&\fImin\fR. If \fImax\fR is omitted, \fIbut the comma is not\fR, there is no upper bound to the number of argument values taken. .RE .IP ": \fItype\fR [ \fIdesttype\fR ]" 4 .IX Item ": type [ desttype ]" Like \f(CW\*(C`=\*(C'\fR, but designates the argument as optional. If omitted, an empty string will be assigned to string values options, and the value zero to numeric options. .Sp Note that if a string argument starts with \f(CW\*(C`\-\*(C'\fR or \f(CW\*(C`\-\-\*(C'\fR, it will be considered an option on itself. .IP ": \fInumber\fR [ \fIdesttype\fR ]" 4 .IX Item ": number [ desttype ]" Like \f(CW\*(C`:i\*(C'\fR, but if the value is omitted, the \fInumber\fR will be assigned. .IP ": + [ \fIdesttype\fR ]" 4 .IX Item ": + [ desttype ]" Like \f(CW\*(C`:i\*(C'\fR, but if the value is omitted, the current value for the option will be incremented. .SH "Advanced Possibilities" .IX Header "Advanced Possibilities" .SS "Object oriented interface" .IX Subsection "Object oriented interface" Getopt::Long can be used in an object oriented way as well: .PP .Vb 5 \& use Getopt::Long; \& $p = Getopt::Long::Parser\->new; \& $p\->configure(...configuration options...); \& if ($p\->getoptions(...options descriptions...)) ... \& if ($p\->getoptionsfromarray( \e@array, ...options descriptions...)) ... .Ve .PP Configuration options can be passed to the constructor: .PP .Vb 2 \& $p = new Getopt::Long::Parser \& config => [...configuration options...]; .Ve .SS "Thread Safety" .IX Subsection "Thread Safety" Getopt::Long is thread safe when using ithreads as of Perl 5.8. It is \&\fInot\fR thread safe when using the older (experimental and now obsolete) threads implementation that was added to Perl 5.005. .SS "Documentation and help texts" .IX Subsection "Documentation and help texts" Getopt::Long encourages the use of Pod::Usage to produce help messages. For example: .PP .Vb 2 \& use Getopt::Long; \& use Pod::Usage; \& \& my $man = 0; \& my $help = 0; \& \& GetOptions(\*(Aqhelp|?\*(Aq => \e$help, man => \e$man) or pod2usage(2); \& pod2usage(1) if $help; \& pod2usage(\-exitval => 0, \-verbose => 2) if $man; \& \& _\|_END_\|_ \& \& =head1 NAME \& \& sample \- Using Getopt::Long and Pod::Usage \& \& =head1 SYNOPSIS \& \& sample [options] [file ...] \& \& Options: \& \-help brief help message \& \-man full documentation \& \& =head1 OPTIONS \& \& =over 8 \& \& =item B<\-help> \& \& Print a brief help message and exits. \& \& =item B<\-man> \& \& Prints the manual page and exits. \& \& =back \& \& =head1 DESCRIPTION \& \& B will read the given input file(s) and do something \& useful with the contents thereof. \& \& =cut .Ve .PP See Pod::Usage for details. .SS "Parsing options from an arbitrary array" .IX Subsection "Parsing options from an arbitrary array" By default, GetOptions parses the options that are present in the global array \f(CW@ARGV\fR. A special entry \f(CW\*(C`GetOptionsFromArray\*(C'\fR can be used to parse options from an arbitrary array. .PP .Vb 2 \& use Getopt::Long qw(GetOptionsFromArray); \& $ret = GetOptionsFromArray(\e@myopts, ...); .Ve .PP When used like this, options and their possible values are removed from \f(CW@myopts\fR, the global \f(CW@ARGV\fR is not touched at all. .PP The following two calls behave identically: .PP .Vb 2 \& $ret = GetOptions( ... ); \& $ret = GetOptionsFromArray(\e@ARGV, ... ); .Ve .PP This also means that a first argument hash reference now becomes the second argument: .PP .Vb 2 \& $ret = GetOptions(\e%opts, ... ); \& $ret = GetOptionsFromArray(\e@ARGV, \e%opts, ... ); .Ve .SS "Parsing options from an arbitrary string" .IX Subsection "Parsing options from an arbitrary string" A special entry \f(CW\*(C`GetOptionsFromString\*(C'\fR can be used to parse options from an arbitrary string. .PP .Vb 2 \& use Getopt::Long qw(GetOptionsFromString); \& $ret = GetOptionsFromString($string, ...); .Ve .PP The contents of the string are split into arguments using a call to \&\f(CW\*(C`Text::ParseWords::shellwords\*(C'\fR. As with \f(CW\*(C`GetOptionsFromArray\*(C'\fR, the global \f(CW@ARGV\fR is not touched. .PP It is possible that, upon completion, not all arguments in the string have been processed. \f(CW\*(C`GetOptionsFromString\*(C'\fR will, when called in list context, return both the return status and an array reference to any remaining arguments: .PP .Vb 1 \& ($ret, $args) = GetOptionsFromString($string, ... ); .Ve .PP If any arguments remain, and \f(CW\*(C`GetOptionsFromString\*(C'\fR was not called in list context, a message will be given and \f(CW\*(C`GetOptionsFromString\*(C'\fR will return failure. .PP As with GetOptionsFromArray, a first argument hash reference now becomes the second argument. .SS "Storing options values in a hash" .IX Subsection "Storing options values in a hash" Sometimes, for example when there are a lot of options, having a separate variable for each of them can be cumbersome. \fIGetOptions()\fR supports, as an alternative mechanism, storing options values in a hash. .PP To obtain this, a reference to a hash must be passed \fIas the first argument\fR to \fIGetOptions()\fR. For each option that is specified on the command line, the option value will be stored in the hash with the option name as key. Options that are not actually used on the command line will not be put in the hash, on other words, \&\f(CW\*(C`exists($h{option})\*(C'\fR (or \fIdefined()\fR) can be used to test if an option was used. The drawback is that warnings will be issued if the program runs under \f(CW\*(C`use strict\*(C'\fR and uses \f(CW$h{option}\fR without testing with \&\fIexists()\fR or \fIdefined()\fR first. .PP .Vb 2 \& my %h = (); \& GetOptions (\e%h, \*(Aqlength=i\*(Aq); # will store in $h{length} .Ve .PP For options that take list or hash values, it is necessary to indicate this by appending an \f(CW\*(C`@\*(C'\fR or \f(CW\*(C`%\*(C'\fR sign after the type: .PP .Vb 1 \& GetOptions (\e%h, \*(Aqcolours=s@\*(Aq); # will push to @{$h{colours}} .Ve .PP To make things more complicated, the hash may contain references to the actual destinations, for example: .PP .Vb 3 \& my $len = 0; \& my %h = (\*(Aqlength\*(Aq => \e$len); \& GetOptions (\e%h, \*(Aqlength=i\*(Aq); # will store in $len .Ve .PP This example is fully equivalent with: .PP .Vb 2 \& my $len = 0; \& GetOptions (\*(Aqlength=i\*(Aq => \e$len); # will store in $len .Ve .PP Any mixture is possible. For example, the most frequently used options could be stored in variables while all other options get stored in the hash: .PP .Vb 6 \& my $verbose = 0; # frequently referred \& my $debug = 0; # frequently referred \& my %h = (\*(Aqverbose\*(Aq => \e$verbose, \*(Aqdebug\*(Aq => \e$debug); \& GetOptions (\e%h, \*(Aqverbose\*(Aq, \*(Aqdebug\*(Aq, \*(Aqfilter\*(Aq, \*(Aqsize=i\*(Aq); \& if ( $verbose ) { ... } \& if ( exists $h{filter} ) { ... option \*(Aqfilter\*(Aq was specified ... } .Ve .SS "Bundling" .IX Subsection "Bundling" With bundling it is possible to set several single-character options at once. For example if \f(CW\*(C`a\*(C'\fR, \f(CW\*(C`v\*(C'\fR and \f(CW\*(C`x\*(C'\fR are all valid options, .PP .Vb 1 \& \-vax .Ve .PP will set all three. .PP Getopt::Long supports three styles of bundling. To enable bundling, a call to Getopt::Long::Configure is required. .PP The simplest style of bundling can be enabled with: .PP .Vb 1 \& Getopt::Long::Configure ("bundling"); .Ve .PP Configured this way, single-character options can be bundled but long options \fBmust\fR always start with a double dash \f(CW\*(C`\-\-\*(C'\fR to avoid ambiguity. For example, when \f(CW\*(C`vax\*(C'\fR, \f(CW\*(C`a\*(C'\fR, \f(CW\*(C`v\*(C'\fR and \f(CW\*(C`x\*(C'\fR are all valid options, .PP .Vb 1 \& \-vax .Ve .PP will set \f(CW\*(C`a\*(C'\fR, \f(CW\*(C`v\*(C'\fR and \f(CW\*(C`x\*(C'\fR, but .PP .Vb 1 \& \-\-vax .Ve .PP will set \f(CW\*(C`vax\*(C'\fR. .PP The second style of bundling lifts this restriction. It can be enabled with: .PP .Vb 1 \& Getopt::Long::Configure ("bundling_override"); .Ve .PP Now, \f(CW\*(C`\-vax\*(C'\fR will set the option \f(CW\*(C`vax\*(C'\fR. .PP In all of the above cases, option values may be inserted in the bundle. For example: .PP .Vb 1 \& \-h24w80 .Ve .PP is equivalent to .PP .Vb 1 \& \-h 24 \-w 80 .Ve .PP A third style of bundling allows only values to be bundled with options. It can be enabled with: .PP .Vb 1 \& Getopt::Long::Configure ("bundling_values"); .Ve .PP Now, \f(CW\*(C`\-h24\*(C'\fR will set the option \f(CW\*(C`h\*(C'\fR to \f(CW24\fR, but option bundles like \f(CW\*(C`\-vxa\*(C'\fR and \f(CW\*(C`\-h24w80\*(C'\fR are flagged as errors. .PP Enabling \f(CW\*(C`bundling_values\*(C'\fR will disable the other two styles of bundling. .PP When configured for bundling, single-character options are matched case sensitive while long options are matched case insensitive. To have the single-character options matched case insensitive as well, use: .PP .Vb 1 \& Getopt::Long::Configure ("bundling", "ignorecase_always"); .Ve .PP It goes without saying that bundling can be quite confusing. .SS "The lonesome dash" .IX Subsection "The lonesome dash" Normally, a lone dash \f(CW\*(C`\-\*(C'\fR on the command line will not be considered an option. Option processing will terminate (unless \*(L"permute\*(R" is configured) and the dash will be left in \f(CW@ARGV\fR. .PP It is possible to get special treatment for a lone dash. This can be achieved by adding an option specification with an empty name, for example: .PP .Vb 1 \& GetOptions (\*(Aq\*(Aq => \e$stdio); .Ve .PP A lone dash on the command line will now be a legal option, and using it will set variable \f(CW$stdio\fR. .SS "Argument callback" .IX Subsection "Argument callback" A special option 'name' \f(CW\*(C`<>\*(C'\fR can be used to designate a subroutine to handle non-option arguments. When \fIGetOptions()\fR encounters an argument that does not look like an option, it will immediately call this subroutine and passes it one parameter: the argument name. Well, actually it is an object that stringifies to the argument name. .PP For example: .PP .Vb 3 \& my $width = 80; \& sub process { ... } \& GetOptions (\*(Aqwidth=i\*(Aq => \e$width, \*(Aq<>\*(Aq => \e&process); .Ve .PP When applied to the following command line: .PP .Vb 1 \& arg1 \-\-width=72 arg2 \-\-width=60 arg3 .Ve .PP This will call \&\f(CW\*(C`process("arg1")\*(C'\fR while \f(CW$width\fR is \f(CW80\fR, \&\f(CW\*(C`process("arg2")\*(C'\fR while \f(CW$width\fR is \f(CW72\fR, and \&\f(CW\*(C`process("arg3")\*(C'\fR while \f(CW$width\fR is \f(CW60\fR. .PP This feature requires configuration option \fBpermute\fR, see section \&\*(L"Configuring Getopt::Long\*(R". .SH "Configuring Getopt::Long" .IX Header "Configuring Getopt::Long" Getopt::Long can be configured by calling subroutine \&\fIGetopt::Long::Configure()\fR. This subroutine takes a list of quoted strings, each specifying a configuration option to be enabled, e.g. \&\f(CW\*(C`ignore_case\*(C'\fR, or disabled, e.g. \f(CW\*(C`no_ignore_case\*(C'\fR. Case does not matter. Multiple calls to \fIConfigure()\fR are possible. .PP Alternatively, as of version 2.24, the configuration options may be passed together with the \f(CW\*(C`use\*(C'\fR statement: .PP .Vb 1 \& use Getopt::Long qw(:config no_ignore_case bundling); .Ve .PP The following options are available: .IP "default" 12 .IX Item "default" This option causes all configuration options to be reset to their default values. .IP "posix_default" 12 .IX Item "posix_default" This option causes all configuration options to be reset to their default values as if the environment variable \s-1POSIXLY_CORRECT\s0 had been set. .IP "auto_abbrev" 12 .IX Item "auto_abbrev" Allow option names to be abbreviated to uniqueness. Default is enabled unless environment variable \&\s-1POSIXLY_CORRECT\s0 has been set, in which case \f(CW\*(C`auto_abbrev\*(C'\fR is disabled. .IP "getopt_compat" 12 .IX Item "getopt_compat" Allow \f(CW\*(C`+\*(C'\fR to start options. Default is enabled unless environment variable \&\s-1POSIXLY_CORRECT\s0 has been set, in which case \f(CW\*(C`getopt_compat\*(C'\fR is disabled. .IP "gnu_compat" 12 .IX Item "gnu_compat" \&\f(CW\*(C`gnu_compat\*(C'\fR controls whether \f(CW\*(C`\-\-opt=\*(C'\fR is allowed, and what it should do. Without \f(CW\*(C`gnu_compat\*(C'\fR, \f(CW\*(C`\-\-opt=\*(C'\fR gives an error. With \f(CW\*(C`gnu_compat\*(C'\fR, \&\f(CW\*(C`\-\-opt=\*(C'\fR will give option \f(CW\*(C`opt\*(C'\fR and empty value. This is the way \s-1GNU\s0 \fIgetopt_long()\fR does it. .IP "gnu_getopt" 12 .IX Item "gnu_getopt" This is a short way of setting \f(CW\*(C`gnu_compat\*(C'\fR \f(CW\*(C`bundling\*(C'\fR \f(CW\*(C`permute\*(C'\fR \&\f(CW\*(C`no_getopt_compat\*(C'\fR. With \f(CW\*(C`gnu_getopt\*(C'\fR, command line handling should be fully compatible with \s-1GNU\s0 \fIgetopt_long()\fR. .IP "require_order" 12 .IX Item "require_order" Whether command line arguments are allowed to be mixed with options. Default is disabled unless environment variable \&\s-1POSIXLY_CORRECT\s0 has been set, in which case \f(CW\*(C`require_order\*(C'\fR is enabled. .Sp See also \f(CW\*(C`permute\*(C'\fR, which is the opposite of \f(CW\*(C`require_order\*(C'\fR. .IP "permute" 12 .IX Item "permute" Whether command line arguments are allowed to be mixed with options. Default is enabled unless environment variable \&\s-1POSIXLY_CORRECT\s0 has been set, in which case \f(CW\*(C`permute\*(C'\fR is disabled. Note that \f(CW\*(C`permute\*(C'\fR is the opposite of \f(CW\*(C`require_order\*(C'\fR. .Sp If \f(CW\*(C`permute\*(C'\fR is enabled, this means that .Sp .Vb 1 \& \-\-foo arg1 \-\-bar arg2 arg3 .Ve .Sp is equivalent to .Sp .Vb 1 \& \-\-foo \-\-bar arg1 arg2 arg3 .Ve .Sp If an argument callback routine is specified, \f(CW@ARGV\fR will always be empty upon successful return of \fIGetOptions()\fR since all options have been processed. The only exception is when \f(CW\*(C`\-\-\*(C'\fR is used: .Sp .Vb 1 \& \-\-foo arg1 \-\-bar arg2 \-\- arg3 .Ve .Sp This will call the callback routine for arg1 and arg2, and then terminate \fIGetOptions()\fR leaving \f(CW"arg3"\fR in \f(CW@ARGV\fR. .Sp If \f(CW\*(C`require_order\*(C'\fR is enabled, options processing terminates when the first non-option is encountered. .Sp .Vb 1 \& \-\-foo arg1 \-\-bar arg2 arg3 .Ve .Sp is equivalent to .Sp .Vb 1 \& \-\-foo \-\- arg1 \-\-bar arg2 arg3 .Ve .Sp If \f(CW\*(C`pass_through\*(C'\fR is also enabled, options processing will terminate at the first unrecognized option, or non-option, whichever comes first. .IP "bundling (default: disabled)" 12 .IX Item "bundling (default: disabled)" Enabling this option will allow single-character options to be bundled. To distinguish bundles from long option names, long options \&\fImust\fR be introduced with \f(CW\*(C`\-\-\*(C'\fR and bundles with \f(CW\*(C`\-\*(C'\fR. .Sp Note that, if you have options \f(CW\*(C`a\*(C'\fR, \f(CW\*(C`l\*(C'\fR and \f(CW\*(C`all\*(C'\fR, and auto_abbrev enabled, possible arguments and option settings are: .Sp .Vb 6 \& using argument sets option(s) \& \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- \& \-a, \-\-a a \& \-l, \-\-l l \& \-al, \-la, \-ala, \-all,... a, l \& \-\-al, \-\-all all .Ve .Sp The surprising part is that \f(CW\*(C`\-\-a\*(C'\fR sets option \f(CW\*(C`a\*(C'\fR (due to auto completion), not \f(CW\*(C`all\*(C'\fR. .Sp Note: disabling \f(CW\*(C`bundling\*(C'\fR also disables \f(CW\*(C`bundling_override\*(C'\fR. .IP "bundling_override (default: disabled)" 12 .IX Item "bundling_override (default: disabled)" If \f(CW\*(C`bundling_override\*(C'\fR is enabled, bundling is enabled as with \&\f(CW\*(C`bundling\*(C'\fR but now long option names override option bundles. .Sp Note: disabling \f(CW\*(C`bundling_override\*(C'\fR also disables \f(CW\*(C`bundling\*(C'\fR. .Sp \&\fBNote:\fR Using option bundling can easily lead to unexpected results, especially when mixing long options and bundles. Caveat emptor. .IP "ignore_case (default: enabled)" 12 .IX Item "ignore_case (default: enabled)" If enabled, case is ignored when matching option names. If, however, bundling is enabled as well, single character options will be treated case-sensitive. .Sp With \f(CW\*(C`ignore_case\*(C'\fR, option specifications for options that only differ in case, e.g., \f(CW"foo"\fR and \f(CW"Foo"\fR, will be flagged as duplicates. .Sp Note: disabling \f(CW\*(C`ignore_case\*(C'\fR also disables \f(CW\*(C`ignore_case_always\*(C'\fR. .IP "ignore_case_always (default: disabled)" 12 .IX Item "ignore_case_always (default: disabled)" When bundling is in effect, case is ignored on single-character options also. .Sp Note: disabling \f(CW\*(C`ignore_case_always\*(C'\fR also disables \f(CW\*(C`ignore_case\*(C'\fR. .IP "auto_version (default:disabled)" 12 .IX Item "auto_version (default:disabled)" Automatically provide support for the \fB\-\-version\fR option if the application did not specify a handler for this option itself. .Sp Getopt::Long will provide a standard version message that includes the program name, its version (if \f(CW$main::VERSION\fR is defined), and the versions of Getopt::Long and Perl. The message will be written to standard output and processing will terminate. .Sp \&\f(CW\*(C`auto_version\*(C'\fR will be enabled if the calling program explicitly specified a version number higher than 2.32 in the \f(CW\*(C`use\*(C'\fR or \&\f(CW\*(C`require\*(C'\fR statement. .IP "auto_help (default:disabled)" 12 .IX Item "auto_help (default:disabled)" Automatically provide support for the \fB\-\-help\fR and \fB\-?\fR options if the application did not specify a handler for this option itself. .Sp Getopt::Long will provide a help message using module Pod::Usage. The message, derived from the \s-1SYNOPSIS POD\s0 section, will be written to standard output and processing will terminate. .Sp \&\f(CW\*(C`auto_help\*(C'\fR will be enabled if the calling program explicitly specified a version number higher than 2.32 in the \f(CW\*(C`use\*(C'\fR or \&\f(CW\*(C`require\*(C'\fR statement. .IP "pass_through (default: disabled)" 12 .IX Item "pass_through (default: disabled)" With \f(CW\*(C`pass_through\*(C'\fR anything that is unknown, ambiguous or supplied with an invalid option will not be flagged as an error. Instead the unknown option(s) will be passed to the catchall \f(CW\*(C`<>\*(C'\fR if present, otherwise through to \f(CW@ARGV\fR. 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. .Sp If \f(CW\*(C`require_order\*(C'\fR is enabled, options processing will terminate at the first unrecognized option, or non-option, whichever comes first and all remaining arguments are passed to \f(CW@ARGV\fR instead of the catchall \&\f(CW\*(C`<>\*(C'\fR if present. However, if \f(CW\*(C`permute\*(C'\fR is enabled instead, results can become confusing. .Sp Note that the options terminator (default \f(CW\*(C`\-\-\*(C'\fR), if present, will also be passed through in \f(CW@ARGV\fR. .IP "prefix" 12 .IX Item "prefix" The string that starts options. If a constant string is not sufficient, see \f(CW\*(C`prefix_pattern\*(C'\fR. .IP "prefix_pattern" 12 .IX Item "prefix_pattern" A Perl pattern that identifies the strings that introduce options. Default is \f(CW\*(C`\-\-|\-|\e+\*(C'\fR unless environment variable \&\s-1POSIXLY_CORRECT\s0 has been set, in which case it is \f(CW\*(C`\-\-|\-\*(C'\fR. .IP "long_prefix_pattern" 12 .IX Item "long_prefix_pattern" A Perl pattern that allows the disambiguation of long and short prefixes. Default is \f(CW\*(C`\-\-\*(C'\fR. .Sp Typically you only need to set this if you are using nonstandard prefixes and want some or all of them to have the same semantics as \&'\-\-' does under normal circumstances. .Sp For example, setting prefix_pattern to \f(CW\*(C`\-\-|\-|\e+|\e/\*(C'\fR and long_prefix_pattern to \f(CW\*(C`\-\-|\e/\*(C'\fR would add Win32 style argument handling. .IP "debug (default: disabled)" 12 .IX Item "debug (default: disabled)" Enable debugging output. .SH "Exportable Methods" .IX Header "Exportable Methods" .IP "VersionMessage" 4 .IX Item "VersionMessage" This subroutine provides a standard version message. Its argument can be: .RS 4 .IP "\(bu" 4 A string containing the text of a message to print \fIbefore\fR printing the standard message. .IP "\(bu" 4 A numeric value corresponding to the desired exit status. .IP "\(bu" 4 A reference to a hash. .RE .RS 4 .Sp If more than one argument is given then the entire argument list is assumed to be a hash. If a hash is supplied (either as a reference or as a list) it should contain one or more elements with the following keys: .ie n .IP """\-message""" 4 .el .IP "\f(CW\-message\fR" 4 .IX Item "-message" .PD 0 .ie n .IP """\-msg""" 4 .el .IP "\f(CW\-msg\fR" 4 .IX Item "-msg" .PD The text of a message to print immediately prior to printing the program's usage message. .ie n .IP """\-exitval""" 4 .el .IP "\f(CW\-exitval\fR" 4 .IX Item "-exitval" The desired exit status to pass to the \fB\f(BIexit()\fB\fR function. This should be an integer, or else the string \*(L"\s-1NOEXIT\*(R"\s0 to indicate that control should simply be returned without terminating the invoking process. .ie n .IP """\-output""" 4 .el .IP "\f(CW\-output\fR" 4 .IX Item "-output" A reference to a filehandle, or the pathname of a file to which the usage message should be written. The default is \f(CW\*(C`\e*STDERR\*(C'\fR unless the exit value is less than 2 (in which case the default is \f(CW\*(C`\e*STDOUT\*(C'\fR). .RE .RS 4 .Sp You cannot tie this routine directly to an option, e.g.: .Sp .Vb 1 \& GetOptions("version" => \e&VersionMessage); .Ve .Sp Use this instead: .Sp .Vb 1 \& GetOptions("version" => sub { VersionMessage() }); .Ve .RE .IP "HelpMessage" 4 .IX Item "HelpMessage" This subroutine produces a standard help message, derived from the program's \s-1POD\s0 section \s-1SYNOPSIS\s0 using Pod::Usage. It takes the same arguments as \fIVersionMessage()\fR. In particular, you cannot tie it directly to an option, e.g.: .Sp .Vb 1 \& GetOptions("help" => \e&HelpMessage); .Ve .Sp Use this instead: .Sp .Vb 1 \& GetOptions("help" => sub { HelpMessage() }); .Ve .SH "Return values and Errors" .IX Header "Return values and Errors" Configuration errors and errors in the option definitions are signalled using \fIdie()\fR and will terminate the calling program unless the call to \fIGetopt::Long::GetOptions()\fR was embedded in \f(CW\*(C`eval { ... }\*(C'\fR, or \fIdie()\fR was trapped using \f(CW$SIG{_\|_DIE_\|_}\fR. .PP GetOptions returns true to indicate success. It returns false when the function detected one or more errors during option parsing. These errors are signalled using \fIwarn()\fR and can be trapped with \f(CW$SIG{_\|_WARN_\|_}\fR. .SH "Legacy" .IX Header "Legacy" The earliest development of \f(CW\*(C`newgetopt.pl\*(C'\fR started in 1990, with Perl version 4. As a result, its development, and the development of Getopt::Long, has gone through several stages. Since backward compatibility has always been extremely important, the current version of Getopt::Long still supports a lot of constructs that nowadays are no longer necessary or otherwise unwanted. This section describes briefly some of these 'features'. .SS "Default destinations" .IX Subsection "Default destinations" When no destination is specified for an option, GetOptions will store the resultant value in a global variable named \f(CW\*(C`opt_\*(C'\fR\fI\s-1XXX\s0\fR, where \&\fI\s-1XXX\s0\fR is the primary name of this option. When a program executes under \f(CW\*(C`use strict\*(C'\fR (recommended), these variables must be pre-declared with \fIour()\fR or \f(CW\*(C`use vars\*(C'\fR. .PP .Vb 2 \& our $opt_length = 0; \& GetOptions (\*(Aqlength=i\*(Aq); # will store in $opt_length .Ve .PP To yield a usable Perl variable, characters that are not part of the syntax for variables are translated to underscores. For example, \&\f(CW\*(C`\-\-fpp\-struct\-return\*(C'\fR will set the variable \&\f(CW$opt_fpp_struct_return\fR. Note that this variable resides in the namespace of the calling program, not necessarily \f(CW\*(C`main\*(C'\fR. For example: .PP .Vb 1 \& GetOptions ("size=i", "sizes=i@"); .Ve .PP with command line \*(L"\-size 10 \-sizes 24 \-sizes 48\*(R" will perform the equivalent of the assignments .PP .Vb 2 \& $opt_size = 10; \& @opt_sizes = (24, 48); .Ve .SS "Alternative option starters" .IX Subsection "Alternative option starters" A string of alternative option starter characters may be passed as the first argument (or the first argument after a leading hash reference argument). .PP .Vb 2 \& my $len = 0; \& GetOptions (\*(Aq/\*(Aq, \*(Aqlength=i\*(Aq => $len); .Ve .PP Now the command line may look like: .PP .Vb 1 \& /length 24 \-\- arg .Ve .PP Note that to terminate options processing still requires a double dash \&\f(CW\*(C`\-\-\*(C'\fR. .PP \&\fIGetOptions()\fR will not interpret a leading \f(CW"<>"\fR as option starters if the next argument is a reference. To force \f(CW"<"\fR and \f(CW">"\fR as option starters, use \f(CW"><"\fR. Confusing? Well, \fBusing a starter argument is strongly deprecated\fR anyway. .SS "Configuration variables" .IX Subsection "Configuration variables" Previous versions of Getopt::Long used variables for the purpose of configuring. Although manipulating these variables still work, it is strongly encouraged to use the \f(CW\*(C`Configure\*(C'\fR routine that was introduced in version 2.17. Besides, it is much easier. .SH "Tips and Techniques" .IX Header "Tips and Techniques" .SS "Pushing multiple values in a hash option" .IX Subsection "Pushing multiple values in a hash option" Sometimes you want to combine the best of hashes and arrays. For example, the command line: .PP .Vb 1 \& \-\-list add=first \-\-list add=second \-\-list add=third .Ve .PP where each successive 'list add' option will push the value of add into array ref \f(CW$list\fR\->{'add'}. The result would be like .PP .Vb 1 \& $list\->{add} = [qw(first second third)]; .Ve .PP This can be accomplished with a destination routine: .PP .Vb 2 \& GetOptions(\*(Aqlist=s%\*(Aq => \& sub { push(@{$list{$_[1]}}, $_[2]) }); .Ve .SH "Troubleshooting" .IX Header "Troubleshooting" .SS "GetOptions does not return a false result when an option is not supplied" .IX Subsection "GetOptions does not return a false result when an option is not supplied" That's why they're called 'options'. .SS "GetOptions does not split the command line correctly" .IX Subsection "GetOptions does not split the command line correctly" The command line is not split by GetOptions, but by the command line interpreter (\s-1CLI\s0). On Unix, this is the shell. On Windows, it is \&\s-1COMMAND.COM\s0 or \s-1CMD.EXE.\s0 Other operating systems have other CLIs. .PP It is important to know that these CLIs may behave different when the command line contains special characters, in particular quotes or backslashes. For example, with Unix shells you can use single quotes (\f(CW\*(C`\*(Aq\*(C'\fR) and double quotes (\f(CW\*(C`"\*(C'\fR) to group words together. The following alternatives are equivalent on Unix: .PP .Vb 3 \& "two words" \& \*(Aqtwo words\*(Aq \& two\e words .Ve .PP In case of doubt, insert the following statement in front of your Perl program: .PP .Vb 1 \& print STDERR (join("|",@ARGV),"\en"); .Ve .PP to verify how your \s-1CLI\s0 passes the arguments to the program. .SS "Undefined subroutine &main::GetOptions called" .IX Subsection "Undefined subroutine &main::GetOptions called" Are you running Windows, and did you write .PP .Vb 1 \& use GetOpt::Long; .Ve .PP (note the capital 'O')? .ie n .SS "How do I put a ""\-?"" option into a Getopt::Long?" .el .SS "How do I put a ``\-?'' option into a Getopt::Long?" .IX Subsection "How do I put a -? option into a Getopt::Long?" You can only obtain this using an alias, and Getopt::Long of at least version 2.13. .PP .Vb 2 \& use Getopt::Long; \& GetOptions ("help|?"); # \-help and \-? will both set $opt_help .Ve .PP Other characters that can't appear in Perl identifiers are also supported as aliases with Getopt::Long of at least version 2.39. .PP As of version 2.32 Getopt::Long provides auto-help, a quick and easy way to add the options \-\-help and \-? to your program, and handle them. .PP See \f(CW\*(C`auto_help\*(C'\fR in section \*(L"Configuring Getopt::Long\*(R". .SH "AUTHOR" .IX Header "AUTHOR" Johan Vromans .SH "COPYRIGHT AND DISCLAIMER" .IX Header "COPYRIGHT AND DISCLAIMER" This program is Copyright 1990,2015 by Johan Vromans. This program is free software; you can redistribute it and/or modify it under the terms of the Perl Artistic License or the \&\s-1GNU\s0 General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. .PP This program is distributed in the hope that it will be useful, but \s-1WITHOUT ANY WARRANTY\s0; without even the implied warranty of \&\s-1MERCHANTABILITY\s0 or \s-1FITNESS FOR A PARTICULAR PURPOSE. \s0 See the \&\s-1GNU\s0 General Public License for more details. .PP If you do not have a copy of the \s-1GNU\s0 General Public License write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, \&\s-1MA 02139, USA.\s0