views:

150

answers:

3

How would you create a variable that could be read. It would read from a certain file if it exists, otherwise it would read from standard input. Something like:

input = File.open("file.txt") || in

This doesn't work, but I think this should be done pretty often, but I can't find a nice way to do it.

+2  A: 

This this works for you?

input = File.exist?("file.txt") ? File.open("file.txt") : STDIN
Simone Carletti
You can also use `$stdin` instead of `STDIN`.
bta
A: 

I think ruby has the ability to treat arguments that aren't used before STDIN is first used as if it were filenames for files piped into standard input.

Andrew Grimm
+1  A: 

See: ...run against stdin if no arg; otherwise input file =ARGV

Wayne Conrad
As much as I hate cryptic naming schemes this is pretty useful.
ezpz
Agree. Well, there is ARGF. Still cryptic, but not as bad as $<.
Wayne Conrad