#!/usr/bin/perl use 5.010; use strict; use warnings; my @pnames = ; for (@pnames) { chomp; / ^\s* # allow leading spaces \{(.+?)\} # IdentifyingNumber in braces \s+ # white space (.+?) # Name \s+ # white space ([0-9\.]+) # Version (allow numeric plus dot) \s*$ # allow trailing space /x or next; # skip lines not conforming to above pattern say "Got Identifying Number: $1"; say "Got Name: $2"; say "Got Version: $3"; say "----"; } __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