On 27.07.2008 18:52, Thomas Luedeke wrote:
> I'm trying to do something that I think would be pretty trivial.  I've
> read in an external file as an array.  I want to parse the array of
> lines, and set a line number as a variable if the line matches a certain
> pattern.  The file is rather long, so I want to break out of the loop
> once I've made the match.
> 
> I've tried this a number of different ways, and they either don't work,
> or I get some JumpError (which is incomprehensible to my newbie mind).
> I'm still deeply in the "suck period" of learning Ruby (and
> transitioning from O-O Fortran 95 and UNIX scripting), so I'm struggling
> quite a bit.
> 
> I'm running Ruby 1.8.6 through Eclipse.
> 
> Where I'm at is the following (and this is just the latest in a series
> of varieties trying to make the stupid thing work):
> 
> ============================
> 
> inputFile = File.open( "filename","r" )
> inputArray = inputFile.readlines
> counts = 1
> xcob3cArray.each catch(:breakout) do |line|
>       line_number = counts
>       throw(:breakout) "$counts" if ( line.lstrip =~ /^(11))/ )
>       counts = counts + 1
> end
> line_number = $counts
> 
> ============================
> 
> Any help would be greatly appreciated!!

If your file is really that large you'd probably rather want to read it 
line by line and not in a single Array.

# untested
def search file, rx
   File.open file do |io|
     io.each do |line|
       return io.lineno if rx =~ line
     end
   end
end

Kind regards

	robert