# FasterCSV.foreach lineno?

**URL:** <https://www.ruby-forum.com/t/fastercsv-foreach-lineno/135722>\
**Category:** Ruby\
**Created:** [April 24, 2008, 1:55pm UTC](https://www.ruby-forum.com/t/fastercsv-foreach-lineno/135722 "2008-04-24T13:55:43Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Bil\_K](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/848f3c/32.png) [@Bil\_K](https://www.ruby-forum.com/u/Bil_K)\
**Post date:** [April 24, 2008, 1:55pm UTC](https://www.ruby-forum.com/t/fastercsv-foreach-lineno/135722/1 "2008-04-24T13:55:43Z")

</div>

OK, so I can’t think my way out of a paper this morning.

Can I access FasterCVS#lineno while inside a foreach?

For example,

$ cat \<\< EOF \> csv\_file  
one  
two  
three  
EOF

$ ruby -rubygems   
-e’require “fastercsv”;FasterCSV.foreach(“csv\_file”)  
{|r| puts “lineno somehow”}’

Thanks,

---

<div class="post-metadata">

**Author:** ![Bil\_K](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/848f3c/32.png) [@Bil\_K](https://www.ruby-forum.com/u/Bil_K)\
**Post date:** [April 24, 2008, 2:47pm UTC](https://www.ruby-forum.com/t/fastercsv-foreach-lineno/135722/2 "2008-04-24T14:47:08Z")

</div>

On Apr 24, 2008, at 7:55 AM, Bil K. wrote:

> EOF
> 
> $ ruby -rubygems   
> -e’require “fastercsv”;FasterCSV.foreach(“csv\_file”)  
> {|r| puts “lineno somehow”}’
> 
> ## Thanks,
> 
> Bil K.  
> [http://fun3d.larc.nasa.gov](http://fun3d.larc.nasa.gov)

Bil,

Since it looks like the answer to your first question is “No.”, what  
if you defined:

class FasterCSV  
def self.foreach\_with\_lineno(path, options = Hash.new, &block)  
open(path, options) do |csv|  
csv.each {|line| block[line, csv.lineno]}  
end  
end  
end

irb\> FasterCSV.foreach\_with\_lineno(“csv\_file”) {|r,l| puts “#{l}: #{r}”}  
1: one  
2: two  
3: three  
=\> nil

-Rob

Rob B. [http://agileconsultingllc.com](http://agileconsultingllc.com)  
removed\_email\_address@domain.invalid

---

<div class="post-metadata">

**Author:** ![Bil\_K](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/848f3c/32.png) [@Bil\_K](https://www.ruby-forum.com/u/Bil_K)\
**Post date:** [April 24, 2008, 3:09pm UTC](https://www.ruby-forum.com/t/fastercsv-foreach-lineno/135722/3 "2008-04-24T15:09:24Z")

</div>

On Apr 24, 2008, at 6:55 AM, Bil K. wrote:

> OK, so I can’t think my way out of a paper this morning.
> 
> Can I access FasterCVS#lineno while inside a foreach?

No, but you can switch to an each() iterator and get at it that way  
(just as you would with an IO object):

$ cat data.csv  
one  
two  
three  
$ cat fcsv\_example.rb  
#!/usr/bin/env ruby -wKU

require “rubygems”  
require “faster\_csv”

FCSV.open(“data.csv”) do |csv|  
csv.each do |row|  
puts “#{csv.lineno}: #{row}”  
end  
end  
$ ruby fcsv\_example.rb  
1: one  
2: two  
3: three

Hope that helps.

James Edward G. II

---

<div class="post-metadata">

**Author:** ![Bil\_K](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/848f3c/32.png) [@Bil\_K](https://www.ruby-forum.com/u/Bil_K)\
**Post date:** [April 24, 2008, 5:32pm UTC](https://www.ruby-forum.com/t/fastercsv-foreach-lineno/135722/4 "2008-04-24T17:32:51Z")

</div>

On Apr 24, 2008, at 10:25 AM, Bil wrote:

> P.S. My comp.lang.ruby newsfeed didn’t carry either of your replies.

They seem to have reached Usenet OK:

[http://groups.google.com/group/comp.lang.ruby/browse\_thread/thread/9a1402264883f615#](http://groups.google.com/group/comp.lang.ruby/browse_thread/thread/9a1402264883f615#)

James Edward G. II

---

<div class="post-metadata">

**Author:** ![Bil\_K](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/848f3c/32.png) [@Bil\_K](https://www.ruby-forum.com/u/Bil_K)\
**Post date:** [April 24, 2008, 5:26pm UTC](https://www.ruby-forum.com/t/fastercsv-foreach-lineno/135722/5 "2008-04-24T17:26:48Z")

</div>

On Apr 24, 9:07 am, James G. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> No, but you can switch to an each() iterator and get at it that way  
> […]  
> Hope that helps.

Yes, thanks.

## Regards,

[http://twitter.com/bil\_kleb](http://twitter.com/bil_kleb)

P.S. My comp.lang.ruby newsfeed didn’t carry either of your replies.
