ARGF 経由でファイルを読み込んで、そのファイルに対していくつかの操作を実行しようとしています。何かを行う前に、特定の行を読み込んでその内容を検証する必要があります。
私は自分のスクリプトを次のように呼び出しています:
./main.rb < input.txt
次のように特定の行(10行目としましょう)にアクセスしようとしています:
if __FILE__ == $0
ARGF.lineno= 10
puts "lineno: #{ARGF.lineno}" # Prints 10 (as expected)
puts "readline: #{ARGF.readline}" # Prints contents of line 0 instead of 10!
end
docsごとに ARGF.lineno= を手動で設定できますが、これは機能しているようです。しかし、設定したばかりの行を読み取ろうとすると、行 0 の内容が取得されます。
指定された行に到達するために行をループすることはオプションではないことに注意してください。私の入力データは数十万行の長さになる可能性があります。
助けてくれてありがとう。