Perlにおけるコマンドライン引数の処理

Getopt::LongとPod::Usageというモジュールと組み合わせるのが良さそうです。Getopt::Longは色々罠があるようで、ちゃんとドキュメントを読んで、:configを設定する必要があります。

サンプル

use strict;
use warnings;
use Getopt::Long qw(:config no_ignore_case bundling auto_help);
use Pod::Usage;

my %opts = (
    num => 5,
);

GetOptions(\%opts, qw{
    num|n=i
    output|o=s
}) or pod2usage(1);

my $target = $ARGV[0];

# ...

__END__

=encoding utf-8

=head1 NAME

do-something - 何かを処理するスクリプト

=head1 SYNOPSIS

    do-something [-n num=5] [-o output] target

=head1 DESCRIPTION

何かを処理するスクリプトです。

=head1 OPTIONS

=over 4

=item -n num=5

取得件数。

=item -o output

出力ファイル名。指定しない場合は標準出力されます。

=item --help

簡易的な使用方法を出力します。

=back