コマンドライン引数からオプションを受け取る

コマンドライン引数の1つ目の要素の先頭が'-'だった場合、
その要素をオプションと判断する。
ここには以下のように書いてあった。

opt = ARGV[0][0] == ?- ? ARGV.shift : ''

?-ってなんぞや?と思ったら、
'-'の文字コードという意味らしい。
そういえば最近、FizzBuzz問題で?dというのを見たことがあったっけ。
あれもdの文字コードって意味だった。


で、「?-って分かりにくいなー。'-'じゃダメなの?」と思い、
以下のように書き直して試してみる。

opt = ARGV[0][0] == '-' ? ARGV.shift : ''

そしたらエラーが出る。

test.rb:5:in `gets': No such file or directory - -s (Errno::ENOENT)
        from test.rb:5

うーん。ダメなのか。。
文字列としては見てくれてないのかな?
よく分からない。


じゃあこれでどうだ。ということでまた別のを試してみる。

opt = ARGV[0][0].to_s == '-' ? ARGV.shift : ''

また同じエラーが出る。


実際にコマンドラインオプションが必要になったときは、
optparseで処理するからいいとしても、
なんでこうなるのか分からなくてスッキリしない。

追記

バリケンの中の人からコメントで教えてもらい、
Integer#chrを使った書き方もできることを知った。
(どうもありがとうございました。)

opt = ARGV[0][0].chr == '-' ? ARGV.shift : ''