Simple editing. Works in IRB; not as script

Hello,
I’m trying to create a simple editing template for myself, just some
code that I can use for future editing needs, where I open a file,
change stuff, and then save the file. I created this simple little
script, but, it doesn’t work when I run it. It complains about line 3. I
get an exception with “wrong number of arguments (0 for 1).” But, when I
do this script, line for line, in IRB, I have no problems.

Dir.chdir(“C:/documents and settings/pb4072/my documents/scripts/ruby”)
contents = File.read{“test1.txt”}

#The file is just a bunch of repeated “The quick brown fox…” phrases.

contents.gsub!(/fox/, “horse”)
File.open(“test2.txt”, “w”) { |f| f.print contents }

Thanks,
Peter

On Jan 16, 2007, at 11:24 AM, Peter B. wrote:

contents = File.read{“test1.txt”}

That’s a typo. You want (…) instead of {…}.

James Edward G. II

James G. wrote:

On Jan 16, 2007, at 11:24 AM, Peter B. wrote:

contents = File.read{“test1.txt”}

That’s a typo. You want (…) instead of {…}.

James Edward G. II

Duh, sorry James, but, I don’t see what you mean. I don’t have any (…)
data in there. The test file I made is named “test1.txt.”)

On Jan 16, 2007, at 11:39 AM, Peter B. wrote:

(…)
data in there. The test file I made is named “test1.txt.”)

The correct line of code is:

contents = File.read(“test1.txt”)

James Edward G. II

On 1/16/07, James Edward G. II [email protected] wrote:

James Edward G. II

Duh, sorry James, but, I don’t see what you mean. I don’t have any
(…)
data in there. The test file I made is named “test1.txt.”)

You need to pass File.read a simple method argument, which goes inside
parentheses, you don’t need a block.

On 1/16/07, Peter B. [email protected] wrote:

You need to pass File.read a simple method argument, which goes inside
parentheses, you don’t need a block.

I don’t understand. My line says this:

contents = File.read{“test1.txt”}

I’m using parentheses, no block. I’ve done this in a number of other
scripts, and, they work fine.

Those aren’t parentheses, they’re braces, which means you’re passing a
block
to it.
You have to use ( instead of { .

contents= File.read(“test1.txt”)

Tamreen Khan wrote:

On 1/16/07, James Edward G. II [email protected] wrote:

James Edward G. II

Duh, sorry James, but, I don’t see what you mean. I don’t have any
(…)
data in there. The test file I made is named “test1.txt.”)

You need to pass File.read a simple method argument, which goes inside
parentheses, you don’t need a block.

I don’t understand. My line says this:

contents = File.read{“test1.txt”}

I’m using parentheses, no block. I’ve done this in a number of other
scripts, and, they work fine.

Those aren’t parentheses, they’re braces, which means you’re passing a
block
to it.
You have to use ( instead of { .

contents= File.read(“test1.txt”)

Yes, I’m an idiot. Thank you very much. I need really big glasses.