my @lines = split(/\n/, <<'__EOI__'); Microsoft Corporation - DirectShow Version 6.4.05.0809 * Microsoft Corporation - Internet Server Version 4.02.0720 * Microsoft Corporation - Internet Explorer Version 5.00.2014.200 * Microsoft Corporation - Windows Installer - Version 2.0.2 * Excel Viewer Version 8.0 * Connectivity Version 2.10.2309 * __EOI__ @lines = join('', @lines) =~ /((?:(?!\s\*\s).)*\s\*\s)/g; print(join($/, @lines), $/); __END__ output ====== Microsoft Corporation - DirectShow Version 6.4.05.0809 * Microsoft Corporation - Internet Server Version 4.02.0720 * Microsoft Corporation - Internet Explorer Version 5.00.2014.200 * Microsoft Corporation - Windows Installer - Version 2.0.2 * Excel Viewer Version 8.0 * Connectivity Version 2.10.2309 * #### my @lines = split(/\n/, <<'__EOI__'); Microsoft Corporation - DirectShow Version 6.4.05.0809 * Microsoft Corporation - Internet Server Version 4.02.0720 * Microsoft Corporation - Internet Explorer Version 5.00.2014.200 * Microsoft Corporation - Windows Installer - Version 2.0.2 * Excel Viewer Version 8.0 * Connectivity Version 2.10.2309 * __EOI__ @lines = split(/\s\*\s/, join('', @lines)); print(join($/, @lines), $/); __END__ output ====== Microsoft Corporation - DirectShow Version 6.4.05.0809 Microsoft Corporation - Internet Server Version 4.02.0720 Microsoft Corporation - Internet Explorer Version 5.00.2014.200 Microsoft Corporation - Windows Installer - Version 2.0.2 Excel Viewer Version 8.0 Connectivity Version 2.10.2309