重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

お世話になります。前任者の作成したプログラムを読んでいるのですが、以下の部分が分からない為、ご教示頂ける方がいらっしゃれば、ご協力よろしくお願いいたします。

<エラーメッセージ表示部>
def usage
STDERR.print "\nusage: #$0 [-F/D] [-START/STOP] Filename \n"
exit 1
end


<オプション処理部>
while ARGV[0] =~ /^-/
case ARGV.shift
when /^-F(\d+)/ ; calling_num = $1.to_s
when /^-T(\d+)/ ; called_num = $1.to_s
when /^-START/ ; start_only = true
when /^-STOP/ ; stop_only =true
else ; usage
end
end

上記の $1へ値を渡すためには、コマンド入力時に特別な引数を渡す方法が必要なのでしょうか。


$ ruby -v check.rb -STOP Filename
⇒ 正常終了

$ ruby -v check.rb -F 012345678 Filename
⇒ STDERR.print 表示

A 回答 (2件)

$ ruby -v check.rb -F 012345678 Filename



のように-Fと012345678の間にスペースが有る場合はARGVの中で別々の要素となります。
従ってこの場合は

when /^-F/ ; calling_num = ARGV.shift.to_s

とする必要があると思います。
-Fと012345678の間にスペースが無い場合はご提示のプログラムで問題ないのではないでしょうか。
    • good
    • 0
この回答へのお礼

仰せのとおりでした。大変助かりました。
どうもありがとうございました。

お礼日時:2008/10/24 10:39

>上記の $1へ値を渡すためには、コマンド入力時に特別な引数を渡す方法が必要なのでしょうか。



どこまでわかっているのか不明ですが、
単純にオプションとして受け取れるのが -F数字 -T数字 -START -STOP のパターンのみで、
-F数字が指定された場合に正規表現 /^-F(\d+)/ にマッチした数字部分が $1 に格納されます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!