2012年6月6日 星期三

002 get parameter [perl]



#!/usr/bin/perl -w

use strict;

my @argv = @ARGV;

if (0==scalar((@argv))) { &print_Usage(); exit(0); }
&get_Parameter();

sub get_Parameter()
{
    while(@argv)
    {
        my $strWord = shift(@argv);
        my ($name,$value) = (undef,undef);
        if ( ($name,$value) = $strWord =~ /^\-(\w)\=(\w+)$/) { }
        elsif ( ($name,$value) = $strWord =~ /^\-\-(\w{2,})\=(\w+)$/) { }
        elsif ($strWord =~ /^\-\-(\w{2,})$/)
        {
            if (scalar(@argv)==0) { print("X: insufficient parameter for $strWord\n"); last; }
            ($name,$value) = ($1,shift(@argv));
        }
        elsif ($strWord =~ /^\-(\w)$/)
        {
            if (scalar(@argv)==0) { print("X: insufficient parameter for $strWord\n"); last; }
            ($name,$value) = ($1,shift(@argv));
        }
        else
        {
            print("X: unrecognized parameter: $strWord\n"); next;
        }
        &take_Action($name,$value);
    }
}

sub take_Action($$)
{
    my ($operator,$operant) = @_;
    if    ($operator eq "h" or $operator eq "hi")  { print("Hello $operant\n"); }
    elsif ($operator eq "b" or $operator eq "bye") { print("Goodbye $operant\n"); }
    else  { print("X: undefined parameter: $operator\n"); }
}

sub print_Usage()
{
    my $strSelf = $0; $strSelf =~ s/.+[\\\/]//;
    print("usage: $strSelf\n".
          "       --hi Name\n".
          "         -h Name\n".
          "      --bye Name\n".
          "         -b Name\n".
          "       --hi=Name\n".
          "         -b=Name\n");
}

沒有留言:

張貼留言