From: Wybo Dekker Date: 2005-06-18T00:40:01+09:00 Subject: Re: stubborn program using readline On Sat, 18 Jun 2005, James Edward Gray II wrote: > On Jun 17, 2005, at 9:28 AM, Wybo Dekker wrote: > > > What I need is a translation of this simple Perl example into Ruby - > > I think Ruby can't do this: > > [snip code] > > I think it can: Sure, when you run it with a file argument. But now try to run it on stdin. For example: $ showlines.rb < showlines.rb It won't work. In Perl, it will. > #!/usr/local/bin/ruby -w > > require "readline" > include Readline > > lines = ARGF.readlines > puts "#{lines.size} lines." > > loop do > line = readline("Line number: ", true) > > if line !~ /^\d+$/ > puts "Please enter a positive integer." > else > number = line.to_i > case number > when 0 > break > when 1..lines.size > puts "Line #{number}: #{lines[number - 1]}" > else > puts "No such line." > end > end > end > > __END__ > > My run: > > $ ruby showlines.rb showlines.rb > 25 lines. > Line number: 1 > Line 1: #!/usr/local/bin/ruby -w > Line number: 16 > Line 16: case number > Line number: 17 > Line 17: when 0 > Line number: 18 > Line 18: break > Line number: 1003 > No such line. > Line number: darn > Please enter a positive integer. > Line number: 0 > > Hope that helps. > > James Edward Gray II > > -- Wybo