Tue Oct 13 00:50:01 2015|1025|959791769374|1234|Tue Oct 13 00:50:01 2015|Tue Oct 13 00:50:01 2015|CMT|Undelivered|none|Submit|0|SMSC_PR_LC_SMSC_InvalidDestAddress|GSM|INVALID|ASCII|92|92|no||no|no||None|No|NO|no|no|0|0|0|0||959790000028||8|0||0|no|no|default_billing|-1|0|no|no|1|1|1|1|0|1|0|0|||||Tue Oct 13 06:50:01 2015|SR|||IV|011809614446740010007|||0|0||0|0||0||||1234|||||||||||||||||| #### #!/usr/bin/perl use strict; use warnings; use Text::CSV; my $csv = Text::CSV->new(); # create a new object $csv->setDelimiter('|'); my $sample_input_string = '""|""|""|""|""|""|""|""|Submit|""|""|""|GSM|GSM|'; if ($csv->parse($sample_input_string)) { my @field = $csv->fields; my $count = 0; for my $column (@field) { print ++$count, " => ", $column, "\n"; } print "\n"; } else { my $err = $csv->error_input; print "parse() failed on argument: ", $err, "\n"; } #### [root@ems Telenor_CDR]# perl text_csv.pl 1 => 2 => 3 => 4 => 5 => 6 => 7 => 8 => 9 => 10 => 11 => 12 => 13 => 14 => 15 => 16 => 17 => 18 => 19 => 20 => 21 => 22 => 23 => 24 => 25 => 26 => 27 => #### Submit|GSM|GSM => 560