use 5.010; my @lines = ('some text FOO | some text BAR | oh , no , commas | some text BAZ | some text QUX'); for my $line (@lines) { chomp $line; if ($line =~ /,/) { my @items = split /,/, $line; my $prefix = substr $items[0], 0, rindex $items[0], '|'; my $suffix = substr $items[-1], index $items[-1], '|'; #say $prefix; #say $suffix; foreach my $item (@items) { say "$prefix | $item $suffix"; } } else { say $line; } }