Getopt::Longの文字デコード処理と値の受付方法
投稿:2017-08-03
@ARGVの文字コード変換を全自動でやってくれるパッケージEncode::Argvを追加しました。
WindowsのActivePerlで動作確認しています。
コマンドプロンプトがcp932(シフトJISっぽい奴)なので文字コード変換が分かりやすいです。
Linuxで動作させたスクリプトを元にした都合で1行目がperlbrew用になっています。
ブログの方は文字列を受け取る指定を追加しました。これだけでよいのか怪しいです。 根本的にブログ投稿者の意図を読めていない可能性が高く自信がありません。
ブログの方は文字列を受け取る指定を追加しました。これだけでよいのか怪しいです。 根本的にブログ投稿者の意図を読めていない可能性が高く自信がありません。
#!/usr/bin/env perl use utf8; use warnings; use strict; use open IO => ":utf8"; use Encode::Argv; use Encode::Locale; use Getopt::Long; binmode STDOUT, ":encoding(console_out)"; $| = 1; my $text = "(none)"; my $opt = 0; GetOptions("text=s" => \$text, "opt" => \$opt); print "テキスト = '$text'\n"; print "オプション = $opt\n"; exit;
C:\??????????>perl sample_6.pl テキスト = '(none)' オプション = 0 C:\??????????>perl sample_6.pl --text 本日は晴天なり テキスト = '本日は晴天なり' オプション = 0 C:\??????????>perl sample_6.pl --opt テキスト = '(none)' オプション = 1 C:\??????????>perl sample_6.pl --text 本日は晴天なり --opt テキスト = '本日は晴天なり' オプション = 1 C:\??????????>perl sample_6.pl --opt --text 本日は晴天なり テキスト = '本日は晴天なり' オプション = 1 C:\??????????>