From: naPOLeon Date: 2006-07-31T22:05:06+09:00 Subject: Re: strange difference between irb and ruby Thanks William and Stefan, your right, gsub! is a better way to do what I want. But your solution doesn't work, either. I think ruby has a problem by invoking gets.chomp (by the way Stefan, it made for me no difference to use $stdin.gets instead of gets )-: in a block. I hope you know a workaround (I tried to write ..do..end instead of {}, but it doesn't changed anything in the behaviour of my program) thanks, naPOLeon William James wrote: > naPOLeon wrote: > > Hello, > > I'm a just beginner to ruby and impressed by the possibility to test > > code in irb. Today I wrote a line of code in irb and it behaved as I > > expected. But when I inserted it in my program and executed with ruby, > > the code-block didn't worke. Maybe you could tell me why. > > > > The line > > > > a.scan(reg_exp).each {|w| print "#{w.to_s}: " > > w is already a string. > > > ; a.sub!(reg_exp, > > gets.chomp)} > > To me, it doesn't make sense to change the string > while you are scanning it. > > Try this: > > a = "foo bar " > reg_exp = /<\w*>/ > a.gsub!(reg_exp) { |w| print "#{w}: "; gets.chomp } > > p a > > > > > > It asked me in irb depending on the size of 'a' for some input and > > replaced a part (I used the Regular Expression /<\w*>/) of the string > > 'a' with my input. > > But if I use this line in a program, the part 'gets.chomp' seems to be > > ignored. The result is no change on String 'a'. > > > > I've no explanation for this strange behaviour, I hope you can give me > > a hint. Maybe the whole line is rubbish and there is a lot better way > > to do the job? > > > > Thanks, > > naPOLeon