#!/usr/bin/perl -- use strict; use warnings; use Data::Dump; my $stuff = q{set zone "VLAN" vrouter "trust-vr" set zone id 100 "Internet_Only"}; open my($in), '<', \$stuff; while(my $line = <$in>){ chomp $line; if ($line =~ /^set\szone\s("([^"]*)"|id\s\d+\s"([^"]*)")/) { my $zone = $1; #~ print "Config line=> $lineCount; Value=> $line; zone=> $zone\n"; #~ print "Config line=> $.; Value=> $line; zone=> $zone\n"; dd [ $., $line, { 1, $1, 2, $2 } ]; } } __END__ [ 1, "set zone \"VLAN\" vrouter \"trust-vr\"", { 1 => "\"VLAN\"", 2 => "VLAN" }, ] [ 2, "set zone id 100 \"Internet_Only\"", { 1 => "id 100 \"Internet_Only\"", 2 => undef }, ]