Using CSV and STDIO?

I would like to create a CSV filter, so I want to read from STDIN and write to STDOUT.

This does not work, even though this is per the the CSV web documentation:

require “rubygems”

require “csv”

require “nokogiri”

CSV($stdin, { :headers => true }){ |csv_in| csv_in.each { |row| p row } }

/Users/joe/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/csv.rb:1871:in `block (2 levels) in shift’: Unquoted fields do not allow \r or \n (line 1). (CSV::MalformedCSVError)

from /Users/joe/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/csv.rb:1836:in `each'

from /Users/joe/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/csv.rb:1836:in `block in shift'

from /Users/joe/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/csv.rb:1796:in `loop'

from /Users/joe/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/csv.rb:1796:in `shift'

from /Users/joe/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/csv.rb:1738:in `each'

from tt.rb:6:in `block in <main>'

from /Users/joe/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/csv.rb:1048:in `instance'

from /Users/joe/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/csv.rb:2320:in `CSV'

from tt.rb:6:in `<main>'

Any thought?

Like the error message says:

Unquoted fields do not allow \r or \n (line 1). (CSV::MalformedCSVError)

The error message is claiming that the data you're sending is malformed--that's not (directly) related to whether the data is coming from a file vs stdio.