in reply to Re^2: gathering of some elements of a list
in thread gathering of some elements of a list

Here's a solution that creates the output you've added to the OP using the updated input data. (When making changes to a post, especially if replies relied on the original unchanged data, specify the changes you made by adding "Update:".)

while (<DATA>) { my @parts = unpack('A5 A7 A5 A3 A5 A9 A8 A5 A*', $_); for ($parts[6]) { s/\s+/ /g; s/^\s//; } print(join(';', @parts), "\n"); }

or

while (<DATA>) { my @parts = unpack('A5 A7 A5 A3 A5 A9 A2 A4 A2 A5 A*', $_); my $flags = join ' ', grep length, @parts[6..8]; splice(@parts, 6, 3, $flags); print(join(';', @parts), "\n"); }

The second version is basically the same as FunkyMonk's, but I do the substitution after extracting the fields.