# simplistic my @lines = scalar ; while () { if (s/^\+//) { $lines[-1] .= $_ } else { push @lines, $_ } } # fancy my @lines; while () { if (s/^\+//) { $lines[@lines && -1] .= $_ } else { push @lines, $_ } } # compact (UPDATED: 1 -> -1) my @lines; $lines[s/^\+// ? @lines && -1 : @lines] .= $_ while ;