⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 getoptsoo.pm

📁 source of perl for linux application,
💻 PM
字号:
require 5;package Pod::Perldoc::GetOptsOO;use strict;# Rather like Getopt::Std's getopts#  Call Pod::Perldoc::GetOptsOO::getopts($object, \@ARGV, $truth)#  Given -n, if there's a opt_n_with, it'll call $object->opt_n_with( ARGUMENT )#    (e.g., "-n foo" => $object->opt_n_with('foo').  Ditto "-nfoo")#  Otherwise (given -n) if there's an opt_n, we'll call it $object->opt_n($truth)#    (Truth defaults to 1)#  Otherwise we try calling $object->handle_unknown_option('n')#    (and we increment the error count by the return value of it)#  If there's no handle_unknown_option, then we just warn, and then increment#    the error counter# #  The return value of Pod::Perldoc::GetOptsOO::getopts is true if no errors,#   otherwise it's false.### sburke@cpan.org 2002-10-31BEGIN { # Make a DEBUG constant ASAP  *DEBUG = defined( &Pod::Perldoc::DEBUG )   ? \&Pod::Perldoc::DEBUG   : sub(){10};}sub getopts {  my($target, $args, $truth) = @_;    $args ||= \@ARGV;  $target->aside(    "Starting switch processing.  Scanning arguments [@$args]\n"  ) if $target->can('aside');  return unless @$args;  $truth = 1 unless @_ > 2;  DEBUG > 3 and print "   Truth is $truth\n";  my $error_count = 0;  while( @$args  and  ($_ = $args->[0]) =~ m/^-(.)(.*)/s ) {    my($first,$rest) = ($1,$2);    if ($_ eq '--') {	# early exit if "--"      shift @$args;      last;    }    my $method = "opt_${first}_with";    if( $target->can($method) ) {  # it's argumental      if($rest eq '') {   # like -f bar        shift @$args;        warn "Option $first needs a following argument!\n" unless @$args;        $rest = shift @$args;      } else {            # like -fbar  (== -f bar)        shift @$args;      }      DEBUG > 3 and print " $method => $rest\n";      $target->$method( $rest );    # Otherwise, it's not argumental...    } else {      if( $target->can( $method = "opt_$first" ) ) {        DEBUG > 3 and print " $method is true ($truth)\n";        $target->$method( $truth );      # Otherwise it's an unknown option...      } elsif( $target->can('handle_unknown_option') ) {        DEBUG > 3         and print " calling handle_unknown_option('$first')\n";                 $error_count += (          $target->handle_unknown_option( $first ) || 0        );      } else {        ++$error_count;        warn "Unknown option: $first\n";      }      if($rest eq '') {   # like -f        shift @$args      } else {            # like -fbar  (== -f -bar )        DEBUG > 2 and print "   Setting args->[0] to \"-$rest\"\n";        $args->[0] = "-$rest";      }    }  }    $target->aside(    "Ending switch processing.  Args are [@$args] with $error_count errors.\n"  ) if $target->can('aside');  $error_count == 0;}1;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -