in reply to Parsing delimited file

As Corion mentioned, your best bet is probably one of the many fine CSV parsing modules.

If you want to code your own solution, here is my suggestion. It will, I think (but this is untested), produce the same output as the code in wilsond's reply, but introduces the map and grep built-ins and a little more use of regexes (see perlre, perlretut and perlrequick), all of which I think you will find rewarding.

(BTW: I, also, am afraid I do not clearly understand your requirements, but perhaps this example may yet be helpful.)

use warnings; use strict; my $splitter = '|'; my $joiner1 = $splitter; my $joiner2 = ' '; while (my $record = <DATA>) { my ($head, @body) = grep ! m{ \A [\nSQ] \z }xms, split m{ \Q$splitter\E }xms, $record ; print join $joiner2, map join($joiner1, $head, $_), @body ; print "\n"; } __DATA__ AAAA|Q|dfadfsfaf|S|asfddsfasfdasdfaf|werwqr345435| BBBB|Q|ccccccccc|S|ddddddddddddddddd|eeeeee111111| FFFF|Q|ggggggggg|S|hhhhhhhhhhhhhhhhh|iiiiii222222|
Output:
AAAA|dfadfsfaf AAAA|asfddsfasfdasdfaf AAAA|werwqr345435 BBBB|ccccccccc BBBB|ddddddddddddddddd BBBB|eeeeee111111 FFFF|ggggggggg FFFF|hhhhhhhhhhhhhhhhh FFFF|iiiiii222222

Replies are listed 'Best First'.
Re^2: Parsing delimited file
by setebos (Beadle) on Jan 18, 2009 at 19:56 UTC
    { local $/, $_ = <DATA>; s/\|$//mg && print; } __DATA__ AAAA|Q|dfadfsfaf|S|asfddsfasfdasdfaf|werwqr345435| BBBB|Q|ccccccccc|S|ddddddddddddddddd|eeeeee111111| FFFF|Q|ggggggggg|S|hhhhhhhhhhhhhhhhh|iiiiii222222|

    means the same, but probably the question means sm.th. else...
      Not quite sure what you're driving at here.

      Output:

      Parentheses missing around "local" list at ... AAAA|Q|dfadfsfaf|S|asfddsfasfdasdfaf|werwqr345435 BBBB|Q|ccccccccc|S|ddddddddddddddddd|eeeeee111111 FFFF|Q|ggggggggg|S|hhhhhhhhhhhhhhhhh|iiiiii222222
        Thank you all for your input. I will tweak the code little bit to suit for my needs