in reply to Parsing delimited file

You can do something like this: (only kinda tested and probably not exactly what you wanted, but at least the output matches what you wanted)

if (open(FH, "<yourdatafile.txt")) { while (my $line = <FH>) { my @columns = split(/\|/, $line); my $stage = 0; my $prefix; my @sections; my $sectionIndex = 0; foreach my $column (@columns) { next if ($column =~ m/^\s*$/); if ($column eq 'Q') { $stage++; next; } elsif ($column eq 'S') { $stage++; $sectionIndex++; next; } elsif ($stage == 0) { $prefix = ($prefix ? join('|', $prefix, $column) : $column); } else { $sections[$sectionIndex] = ($sections[$sectionIndex] ? join('| +', $sections[$sectionIndex], $column) : $column); $sectionIndex++ if ($stage == 2); } } foreach my $section (@sections) { $section = join('|', $prefix, $section); } print join(' ', @sections)."\n"; } close(FH); }

Your question wasn't very easy to interpret. If you can clarify what you want, it would help answer your question.


If you want to do evil, science provides the most powerful weapons to do evil; but equally, if you want to do good, science puts into your hands the most powerful tools to do so.
- Richard Dawkins