|
|
|
|
||||||
![]() |
|
|
LinkBack | Outils de la discussion |
|
|
#1 |
|
Messages: n/a
Hébergeur: |
hello,
im new to ruby and i have a text file and want to read in the file and print it out. so far iv got the following. I'd greatly appreciate any . thanks. text file (reference.txt): Tag: ref1 Type: Book Author: Little, S R ruby file: #!/usr/local/bin/ruby # # # read file and print # ARGV.each do |fn| begin (fn == '-' ? STDIN : File.open(fn)).each_line do |l| if $indent > 0 (1..$indent).each { print ' ' } end puts l end -- Posted via http://www.ruby-forum.com/. |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
I would change
if $indent > 0 (1..$indent).each { print ' ' } end to print ' ' * $indent On Dec 3, 2007 10:57 AM, Johnathan Smith <stu_09@hotmail.com> wrote: > hello, > > im new to ruby and i have a text file and want to read in the file > and print it out. > > so far iv got the following. I'd greatly appreciate any . > > thanks. > > text file (reference.txt): > Tag: ref1 > Type: Book > Author: Little, S R > > ruby file: > #!/usr/local/bin/ruby > # > # > # read file and print > # > ARGV.each do |fn| > begin > (fn == '-' ? STDIN : File.open(fn)).each_line do |l| > if $indent > 0 > (1..$indent).each { print ' ' } > end > puts l > end > -- > Posted via http://www.ruby-forum.com/. > > |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
I've changed my approach as i dont actually want to count the lines
so i now have this: ARGV.each do |fn| begin (fn == 'reference.txt' ? STDIN : File.open(fn)).each_line do |l| puts l end by this im trying to read in the text file and print out its contents i seem to be getting a load error any reason why? thank you -- Posted via http://www.ruby-forum.com/. |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
On Dec 3, 2007 11:16 AM, Johnathan Smith <stu_09@hotmail.com> wrote:
> I've changed my approach as i dont actually want to count the lines > > so i now have this: > > ARGV.each do |fn| > begin > (fn == 'reference.txt' ? STDIN : File.open(fn)).each_line do |l| > puts l > end > > by this im trying to read in the text file and print out its contents > > i seem to be getting a load error > any reason why? > > thank you > -- > > Posted via http://www.ruby-forum.com/. > > You're missing two `end` lines: ARGV.each do |fn| begin (fn == '-' ? STDIN : File.open(fn)).each_line do |l| puts l end end end Sorry, I thought we were just looking at a fragment of your code before, so I didn't comment on the missing `end` lines. |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
On 12/3/07, Johnathan Smith <stu_09@hotmail.com> wrote:
> I've changed my approach as i dont actually want to count the lines > > so i now have this: > > ARGV.each do |fn| > begin > (fn == 'reference.txt' ? STDIN : File.open(fn)).each_line do |l| > puts l > end ARGV.each will iterate through every parameter you pass. Since your script is so simple, you're better of with ARGV[0]. You'd have to check the length and see if ARGV.length == 1. A more Ruby-like approach is this: #!/usr/bin/env ruby -wKU if ARGV.length != 1 puts "Syntax is: ruby readfile.rb filename" exit end File.open(ARGV[0], "r") do |file| while line = file.gets puts line end end Using File.open with a block will automatically open and close the file handler and that's a pretty decent practice to start with. I'd highly recommend you the PickAxe book (Programming Ruby, 2nd edition). It does a great job explaining Ruby concepts (the code above is just a rip-off from Mr. Thomas's example on page 129). However, I've heard people complaining that it's a bit daunting for new programmers. Maybe you'd feel a bit better with Learning to Program by Chris Pine if words like "iterators" and "inheritance" make you sweat. -- Andrei Maxim http://andreimaxim.ro |
|
![]() |
| Outils de la discussion | |
|
|