>
>True, but what if I change my example such that the srchStr changes to 
>###############################################################
>i = 0
>failed = true
>found  = false
>while true do
>   i += 1
>   puts i
>         rptFile = "CYPsw00695.rpt"
>         #the following line is different:
>         srchStr = "!(/Error Count = [1-9]/ || /Abort/ || /[1-9] error/ || 
>/fatal/)"
>         rpt_h = File.open rptFile
>         puts "after File.open #{rptFile}" if $DEBUG
>         puts "srchStr is: #{srchStr}" if $DEBUG
>         while rpt_h.gets do
>           #puts "while: #$_" if $DEBUG
>
>           if eval srchStr
>              failed = false
>              found  = true
>           else
>              failed = true
>              break
>           end  #if eval
>
>         end
>         rpt_h.close
>end         
>##########################################################

OK, I ran the above code on Win2K.  It ran for 40 iterations and then 
failed like this:

Exception `fatal' at (eval):1 - failed to allocate memory
(eval):1: failed to allocate memory (fatal)


So, its failing in the eval.

Phil