use Text::xSV; my $csvI = new Text::xSV; my $csvO = new Text::xSV; $csvI->open_file("country.txt"); $_->set_sep("\t") for ($csvI, $csvO); $csvI->read_header(); my @F; foreach( keys(%{$csvI->{field_pos}}) ){ $F[$csvI->{field_pos}->{$_}] = $_; } $csvO->set_header(\@F); $csvO->print_header(); while ($csvI->get_row()) { my %F = $csvI->extract_hash(); #Do stuff here $F{EFM2}*=1.1; $csvO->print_data(%F); }