Don't use split; use a regular expression with capture groups.
#!/usr/bin/perl use 5.010; use strict; use warnings; my @pnames = <DATA>; 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 Terada +ta 14.00.0.0 {1551F9D6-1B14-4AE1-BABA-70A4319C236A} ODBC Driver Provider + 14.00.0.0
In reply to Re: Processing array with suitable options
by tobyink
in thread Processing array with suitable options
by Bharath666
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |