How much data is there? Can you do create one string from the array?
@lines = join('', @lines) =~ /((?:(?!\s\*\s).)*\s\*\s)/g;
or, if you don't mind losing the stars,
@lines = split(/\s\*\s/, join('', @lines));
Test case
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 *
or
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
In reply to Re: Need help parsing ambiguously formatted data
by ikegami
in thread Need help parsing ambiguously formatted data
by Dismas
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |