use strict; use warnings; use Data::Dumper; #foreach $name ( @pnames ) while() { next if (/^\s*$/); chomp($_); $_ =~s/ {1,}/ /; my @names = split(/ {3,}/, $_); print Dumper \@names; } __DATA__ IdentifyingNumber Name Version {E094B8EA-87B7-48DE-A0A8-A18AC8BFCDF4} .NET Data Provider for Teradata 14.00.0.0 {1551F9D6-1B14-4AE1-BABA-70A4319C236A} ODBC Driver Provider 14.00.0.0