use warnings; use strict; while () { chomp; my @cols = split; my @a1 = splice @cols, 0, 3; my @a2 = splice @cols, -7, 7; my $pool = join ' ', @cols; print join(';', @a1, $pool, @a2), "\n"; } __DATA__ PID POLS U(%) POOL_NAME Seq# Num LDEV# H(%) VCAP(%) TYPE PM 003 POLN 0 Bad name with spaces 13453 2 61443 80 - OPEN N 002 POLN 52 DemoSolutions 54068 7 61454 80 - OPEN N