in reply to Split criteria

The standard technique is to use Text::xSV or Text::CSV. In this case it has to be Text::CSV because you are using an unusual quote character (!). Consider:

#!/usr/bin/perl use strict; use warnings; use Text::CSV; my $csv = Text::CSV->new ({quote_char => '!'}); print "Splitting data by comma as a delimiter \n"; while (<DATA>){ next unless $csv->parse ($_); my @data = $csv->fields (); print "Data splitted is as below \n"; print join("==>",@data),"\n"; # i will do something else with splitted data in this iteratio +n } __DATA__ !A001ST!,!98!,!1!,!01/10/1999!,!EUROPEENNE!,!0!,!EUR!,!6!,!7!,!0!,!98! +,!1! !A001ST!,!AD,CD!,!1!,!20/05/2004!,!ANDORRA!,!0!,!EUR,USD!,!6!,!7!,!0!, +!AD!,!1!

Prints:

Splitting data by comma as a delimiter Data splitted is as below A001ST==>98==>1==>01/10/1999==>EUROPEENNE==>0==>EUR==>6==>7==>0==>98== +>1 Data splitted is as below A001ST==>AD,CD==>1==>20/05/2004==>ANDORRA==>0==>EUR,USD==>6==>7==>0==> +AD==>1

Perl reduces RSI - it saves typing