in reply to Store multiple lines
This might be what you're after, but it's probably fragile and definitely still horribly messy. I wouldn't start from where you are, in all honesty.
use strict; use warnings; my @grep = <DATA>; my $ip = 'whatever'; if (@grep) { my $hop; my $static; my $tag; my $vpna; my $dns; my %results; print "\nFound some static routes...\n"; while (my $line = shift @grep) { if ($line =~ m/^(\S+):\s+static-route (\S+) next-hop (\S+)( preference +\d+|)( bfd-enable|) tag (\d+)/ ) { ($dns, $static, $hop, $tag) = ($1, $2, $3, $6); $line = shift @grep; $line =~ m/^(\S+)-\s+service-name (\S+)/; $vpna = $2; $results{$dns}{$vpna}{$static}{$hop} = $tag; } } #print Dumper \%results; for my $box (keys %results) { print "\n$box\n"; for my $service (keys %{$results{$box}}) { for my $static (keys %{$results{$box}{$service}}) { for my $hop (keys %{$results{$box}{$service}{$static}} +) { print "$static\t next-hop $hop\t"; print "tag $results{$box}{$service}{$static}{$hop}, se +rvice $service\n"; print "\n"; } } } } } else { print "No static routes exist for $ip\n"; } __DATA__ dnsname1: static-route 1.1.1.1/30 next-hop 2.2.2.2 preferen +ce 200 bfd-enable tag 685 dnsname1- service-name "XYZ12345-s12345" dnsname2: static-route 3.3.3.3/30 next-hop 4.4.4.4 bfd-enab +le tag 635 dnsname2- service-name "XYZ67891-s67890"
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Store multiple lines
by bartrad (Beadle) on Feb 09, 2018 at 13:27 UTC | |
by poj (Abbot) on Feb 09, 2018 at 13:52 UTC | |
by hippo (Archbishop) on Feb 09, 2018 at 14:14 UTC |