自作のPerlスクリプトで引数にオプションを使いたかったので、Getopt::LongとPod::Usageモジュールを使ってみたので、その備忘録です。

■スクリプト

#!/usr/bin/perl
use strict;
use warnings;
use Getopt::Long;
use Pod::Usage;

# Check ARGV.
if (-1 == $#ARGV) {
 pod2usage(2);
}

my %opt = ();
GetOptions(\%opt, 'help|h', 'num=i', 'man' ) or die ("ERROR $!");
pod2usage(1) if $opt{help} or $opt{h};
pod2usage(-verbose => 2) if $opt{man};
print $opt{num}, "\n" if $opt{num};

__END__

=pod

=head1 NAME

options.pl -- test script.

=head1 SYNOPSIS

B<options.pl> [options...]

Options: [-h|--hel-n=N|--num=N|-m|--man]

=head1 OPTIONS

=over 8

=item B<-h|--help>

print help.

=item B<-n=N|--num=N>

print number.

=item B<-m|--man>

print man.

=back

=head1 DESCRIPTION

This script is testscript.

=cut

■2行~5行目
読み込むモジュールを指定。

Getopt::Long オプションを簡単に使えるようにするモジュール
Pod::Usage Usageを簡単に表示できるようにするモジュール

■8行~10行目
何も引数(オプション)が無い場合、Usageを表示する。

■13行目
ここでは、引数で渡せるオプションの設定。
使えるようにしたオプションは、「help or h」「num or n」「man or m」です。

■14行~15行目
オプションで「help or h」を指定してきたら、「Usage」と「Options」を表示する。
オプションで「man」を指定してきたら、manを見せる。

■16行目
もし、オプションで整数を指定してきた場合は、標準出力に出す。

〇例

[root@example ~]# ./example.pl -n 1
1
[root@example ~]# ./example.pl -n=1
1
[root@example ~]# ./example.pl --num 1
1
[root@example ~]# ./example.pl --num=1
1

■18行~54行目
Pod::Usageの記述。

〇引数が何もない場合

[root@example ~]# ./example.pl
Usage:
    options.pl [options...]

    Options: [-h|--hel-n=N|--num=N|-m|--man]


〇引数に「help」を付けた場合

[root@example ~]# ./example.pl --help
Usage:
    options.pl [options...]

    Options: [-h|--hel-n=N|--num=N|-m|--man]

Options:
    -h|--help
            print help.

    -n=N|--num=N
            print number.

    -m|--man
            print man.


〇引数に「man」を付けた場合(manページになる)

[root@example ~]# ./example.pl --man
EXAMPLE(1)            User Contributed Perl Documentation           EXAMPLE(1)

NAME
       options.pl -- test script.

SYNOPSIS
       options.pl [options...]

       Options: [-h|--hel-n=N|--num=N|-m|--man]

OPTIONS
       -h|--help
               print help.

       -n=N|--num=N
               print number.

       -m|--man
               print man.

DESCRIPTION
       This script is testscript.

perl v5.8.8                       2012-06-11                        EXAMPLE(1)


■参考文献

- Pod::Usage
1. http://perldoc.jp/docs/perl/5.6.1/perlpod.pod
2. http://homepage3.nifty.com/hippo2000/perltips/podread.htm

- Getopt::Long
1. http://search.cpan.org/~jv/Getopt-Long-2.38/lib/Getopt/Long.pm
2. http://fleur.hio.jp/perldoc/mix/lib/Getopt/Long.ja.html


6月 11, 2012 at 9:24 pm by 黒ぶちメガネ
Category: Linux, Perlスクリプト