http://www.perlmonks.org?node_id=1208672


in reply to Formatting an array

Maybe something like:

c:\@Work\Perl\monks>perl -wMstrict -le "use Regexp::Common qw(net); ;; my @strings = ( '/data/alcatel_7750/routername1- static-route 1.1.1.1/30 next- +hop 2.2.2.2 tag 624', '/data/alcatel_7750/routername2- static-route 1.1.1.3/30 next- +hop 3.3.3.3 tag 624', '/data/alcatel_7750/routername3- static-route 1.1.1.2/30 next- +hop 4.4.4.4 tag 628', ); ;; my $rx_ipv4_dotted_dec = qr{ (?<! \d) $RE{net}{IPv4} (?! \d) }xms; my $rx_routename = qr{ \b [[:alpha:]] \w* \b }xms; my $rx_route = qr{ \b [[:alpha:]] [[:alpha:]-]* \b }xms; ;; for my $s (@strings) { my $parsed = my ($r_name, $r_ip) = $s =~ m{ / ($rx_routename) - \s+ ($rx_route \s+ $rx_ipv4_dotted_dec / \d+) }xms; ;; die qq{bad record: '$s'} unless $parsed; ;; print qq{'$s' -> \n ($r_name) ($r_ip)}; } " '/data/alcatel_7750/routername1- static-route 1.1.1.1/30 next-hop + 2.2.2.2 tag 624' -> (routername1) (static-route 1.1.1.1/30) '/data/alcatel_7750/routername2- static-route 1.1.1.3/30 next-hop + 3.3.3.3 tag 624' -> (routername2) (static-route 1.1.1.3/30) '/data/alcatel_7750/routername3- static-route 1.1.1.2/30 next-hop + 4.4.4.4 tag 628' -> (routername3) (static-route 1.1.1.2/30)


Give a man a fish:  <%-{-{-{-<