On 23 Apr 2007, at 09:51, Bino Oetomo wrote:

> Hi All
> Philipp Taprogge wrote:
>> Hi!
>>
>> Thus spake Bino Oetomo on 04/21/2007 07:14 AM:
>>> Question : How to tell ruby to go to next command if only the  
>>> file is
>>> not empty.
>>
>> You have two options: either you rescue the EOFError and deal with
>> it programmatically, or you just use IO.gets instead of IO.readline,
>> which will not raise an error but return 'nil' if the EOF is reached.
>>
>> HTH,
>>
>>   Phil
>
> I tried it with irb, here is the cut
> -----------Start--------------
> [root@kannel root]# rm /mnt/ramdisk0/js01
> rm: remove regular empty file `/mnt/ramdisk0/js01'? y
> [root@kannel root]# touch /mnt/ramdisk0/js01
> [root@kannel root]# irb
> irb(main):001:0> File.open("/mnt/ramdisk0/js01", "r+") do |f|
> irb(main):002:1*     f.each_line { |line|
> irb(main):003:2* puts line
> irb(main):004:2> f.close}
> irb(main):005:1>     rescue EOFError
> irb(main):006:1> f.close
> irb(main):007:1> end
> SyntaxError: compile error
> (irb):5: parse error, unexpected kRESCUE, expecting kEND
>     rescue EOFError
>           ^
>         from (irb):7
>         from :0
> ----------end-----------------
>
>
> -- 
> Posted via http://www.ruby-forum.com/.
>

rescue needs to be paired with a begin. E.g.

irb(main):021:0> begin
irb(main):022:1* raise
irb(main):023:1> rescue
irb(main):024:1> puts "hi"
irb(main):025:1> end
hi
=> nil

Alex Gutteridge

Bioinformatics Center
Kyoto University