Abinoam Jr. wrote in post #1136756:
> Try...
>
> CSV.filter(input,output,:col_sep => ",",:headers => true,
> :return_headers => true) do |csv|

Tried and worked.. Thanks as always.

require 'csv'

content = <<CSV
id,first name,last name,age,sex
12,arup,rakshit,26,M
11,ayan,das,25,M
44,puja,roy,19,F
18,Dolly,Sen,21,F
CSV

File.write('a.csv',content)

#CSV.foreach('a.csv') do |row|
#  p row
#end

input = File.new('a.csv','r')
output = File.new('b.csv','w')

CSV.filter(input,output,:col_sep => ",",:headers => true,:return_headers 
=> true) do |csv|
  next csv['status'] = "eligible" if csv['sex'] == "F"
  csv['status'] = ""
end
output.close

CSV.foreach('b.csv') do |row|
  p row
end
# >> ["id", "first name", "last name", "age", "sex", ""]
# >> ["12", "arup", "rakshit", "26", "M", ""]
# >> ["11", "ayan", "das", "25", "M", ""]
# >> ["44", "puja", "roy", "19", "F", "eligible"]
# >> ["18", "Dolly", "Sen", "21", "F", "eligible"]

Now you can see, I have added one more column "status", inside the 
block, can this be added to the header row, and get the output as -

["id", "first name", "last name", "age", "sex", "status"] ?

-- 
Posted via http://www.ruby-forum.com/.