end0tknr's kipple - 新web写経開発

http://d.hatena.ne.jp/end0tknr/ から移転しました

perlのCLIでコマンドライン引数を受取りは、Getopt::Long::GetOptions()

↓こんな感じで使用します。とうより、自分用メモ。

#!/usr/local/bin/perl
use strict;
use warnings;
# http://tagomoris.hatenablog.com/entry/20120918/1347991165
use Getopt::Long qw(:config posix_default no_ignore_case gnu_compat);
use Data::Dumper;

my $cmd_opts = {};

main();

sub main {

    my $cmd_opts = {}; # Getopt::Long::GetOptions により引き数が蓄積
    
    my @defined_opts =
        ('conf_file=s','mail_type=s','mail_data=s','subject=s','output=s');
    #不明なoptionが与えられた場合
    unless(Getopt::Long::GetOptions($cmd_opts,@defined_opts)){
        print_usage();
        return;
    }

    #本来?は、ここで、与えられた引き数をvalidataion
    if(scalar(keys %$cmd_opts)==0){
        print_usage();
        return;
    }

    
    #で、その後の処理に入る...
}

sub print_usage {

    print "Usage: $0 COMMAND [OPTION]\n";
    print '  --conf_file=$FILE_PATH',"\n";
    print "  --mail_data=[NULL, BULK_MAIL]\n";
    print '  --subject=$SUBJECT',"\n";
    print '  --output=[NULL, FILE, $MAILTO]',"\n";

}