#!/usr/bin/perl use strict; use Text::CSV; my $old_string; my $csv = Text::CSV->new(); while ( my $line = ) { $old_string = $old_string . join( " ", $csv->fields() ) . "\n" if ( $csv->parse( $line ) ); } my @new_string = map { $_->[0] } sort { $a->[1] cmp $b->[1] } map { [$_, (split)[4]] } split( /\n/, $old_string ); # Recreating the CSV data. foreach my $i (@new_string) { my $j = join "\",\"", split( " ", $i); print "\"$j\" \n"; } __DATA__ "Task1,Task2",ABC,ABC,Mon 05/22/2009,mbm "Task3,Task4",XYZ,XYZ,Mon 05/20/2009,mbm "Task5,Task6",ABC,ABC,Mon 06/25/2009,mbm "Task7,Task8",ABC,ABC,Mon 03/28/2009,mbm