Here I am trying to count the events where 10th field (Submit), 13th field (GSM), 14th field (SMPP). The sample input is
Tue Oct 13 00:50:01 2015|1025|959791769374|1234|Tue Oct 13 00:50:01 20 +15|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|011809614446740 +010007|||0|0||0|0||0||||1234||||||||||||||||||
I tried like this. It's not showing any error nor warnings. I don't understand where I have to mention my input file.
#!/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"; }
Output
[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 =>
Expected output
Submit|GSM|GSM => 560
In reply to Need help with Text::CSV by ravi45722
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |