$/ = ''; $\ = "\n"; $, = ", "; while (1) { local $_ = <> or last; s/\s+$//; my $y = <> or last; $y =~ s/\s+$//; if ( /(.+) (APT \d.*)/ ) { print $1, $2, $y; } elsif ( /(.+) (APT) \(Range (\d+)([A-Z]+) - \3([A-Z]+)\)/ ) { print $1, "$2 $3$_", $y for $4 .. $5; } }