Perlサンプル12 オプション処理とヘルプ表示
投稿:2019-12-21
実行時にオプションを指定できるようにして、それをヘルプ表示します。
ここでは、有効/無効(スイッチ)としてのオプションだけを扱いました。
他にも文字列や数値を指定するオプションを処理できるのでとても便利です。
自作のスクリプトでも時間が経てば忘れてしまうのでスクリプト内にメモを残しておくと後で参考になります。
ヘルプを表示できればエディタで開く事もありません。
オプション処理もヘルプ表示もお任せ♪
Getopt::Long - Extended processing of command line options - metacpan.org
Getopt::Long - Extended processing of command line options - metacpan.org
#!/usr/bin/env perl
use v5.26;
use utf8;
use strict;
use warnings;
use feature "say";
use open IO => ":utf8";
use Encode::Argv;
use Encode::Locale;
use Getopt::Long qw(:config auto_help);
binmode STDOUT, ":encoding(console_out)";
binmode STDERR, ":encoding(console_out)";
$| = 1;
my %opt;
GetOptions(
\%opt,
"takoluka", "luka", "all",
) or die "オプションが誤っている";
if (@ARGV) {
die "不要なオプションがある:'@ARGV'";
}
if ($opt{all}) {
takoluka();
luka();
} elsif ($opt{takoluka}) {
takoluka();
} elsif ($opt{luka}) {
luka();
} else {
say "デフォルトの動作です。";
}
exit;
sub takoluka {
say "たこルカは俺の嫁";
}
sub luka {
say "ルカ姐さんも俺の嫁";
}
=pod
=head1 SYNOPSIS
perlsample_012.pl <オプション>
=head2 実行例
perl perlsample_012.pl --luka --takoluka(オプションtakolukaが有効)
=head2 オプション
この順で最初に見つかるオプションが優先します。
=over
=item 1.
all
全員の事を表示します。
=item 2.
takoluka
たこルカの事を表示します。
=item 3.
luka
ルカ姐さんの事を表示します。
=back
=head2 オプションなし
デフォルトの動作をします。
=cut
オプションなし。
perl perlsample_012.pl デフォルトの動作です。各種のオプションを指定します。
perl perlsample_012.pl --all たこルカは俺の嫁 ルカ姐さんも俺の嫁
perl perlsample_012.pl --takoluka たこルカは俺の嫁
perl perlsample_012.pl --luka ルカ姐さんも俺の嫁ヘルプを表示します。
perl perlsample_012.pl --help Usage: perlsample_012.pl <オプション> 実行例: perl perlsample_012.pl --luka --takoluka(オプションtakolukaが有効) オプション: この順で最初に見つかるオプションが優先します。 1. all 全員の事を表示します。 2. takoluka たこルカの事を表示します。 3. luka ルカ姐さんの事を表示します。 オプションなし: デフォルトの動作をします。特定できれば短い名前にしてもOKです。
perl perlsample_012.pl --tako たこルカは俺の嫁オプションの1文字目が重複しなければ1文字でも特定できるのでOKです。
perl perlsample_012.pl --t たこルカは俺の嫁ハイフン2文字「--」を1文字「-」にしてもOKです。
perl perlsample_012.pl -takoluka たこルカは俺の嫁最短にした場合。
perl perlsample_012.pl -t たこルカは俺の嫁でもLinuxのコマンドによくあるハイフン「-」に続けて1文字のオプションを並べるのは分解してくれません。 GetOptionsで"bundling"指定が必要です。
perl perlsample_012.pl -atl Unknown option: atl オプションが誤っている at perlsample_012.pl line 22.ハイフンなしのオプションがあればオプション処理後に拾えます。 このサンプルでは使わずにエラー扱いにしています。
perl perlsample_012.pl abc 不要なオプションがある:'abc' at perlsample_012.pl line 29.