#!/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 },
]
####
use Text::Balanced qw/ :ALL /;
my @parts = extract_multiple(
$line,
[
sub {
extract_delimited(
$_[0],
'"',
);
},
],
);
dd\@parts;
####
["set zone ", "\"VLAN\"", " vrouter ", "\"trust-vr\""]
["set zone id 100 ", "\"Internet_Only\""]
####
my @parts = split /("[^"]*")/, $line;
dd\@parts;
####
my @parts = split /((?:\"(?:\\\"|(?!\").)*\"|\'(?:\\\'|(?!\').)*\'))/, $line;
dd\@parts;