From: James Dinkel Date: 2008-08-19T14:21:53+09:00 Subject: passing a variable from a block back to the method I have several files that I have to read, check the contents, and then write any changes. I overloaded the File class to help me out with this: ---------------------------------------------------------- class File def self.change(filename) # read the file, execute a block, then write the file File.open(filename, 'r+') do |file| lines = file.readlines yield lines # return if not changing anything file.pos = 0 file.print lines file.truncate(file.pos) end end end ---------------------------------------------------------- The method is called with: ---------------------------------------------------------- File.change('awesomefile') do |contents| contents.collect! do |line| # magic happens # decide not to change anything end end ---------------------------------------------------------- This is a huge waste if the files don't change (as they often don't). The problem I'm having is with the "# decide not to change anything" in the block and passing that back to the method so "# return if not changing anything" knows the answer. I'm not sure if I can pass an instance variable around to do this? I don't really know how that would work since I don't really have an instance of file to work with. Maybe someone has some ideas? -- Posted via http://www.ruby-forum.com/.