#!/usr/bin/perl # vim: sw=4 use strict; use warnings; my ($vlan, $ipaddress, $netmask); my %interfaces; # great variable name. while () { if (/^interface Vlan(\d+)/) { $vlan = $1; } elsif (/no ip address/) { ($vlan, $ipaddress, $netmask) = (undef, undef, undef); next; } elsif (/ip address ((\d+\.){3}\d+) ((\d+\.){3}\d)/) { ($ipaddress, $netmask) = ($1, $3); } elsif (/^!$/ && $ipaddress && $netmask) { $interfaces{$vlan}->{ip} = $ipaddress; $interfaces{$vlan}->{netmask} = $netmask; } } use Data::Dumper; print Dumper \%interfaces; __DATA__ interface Vlan1 no ip address no ip route-cache shutdown ! interface Vlan12 ip address 68.142.192.79 255.255.255.0 no ip route-cache shutdown ! interface Vlan8 ip address 68.142.192.79 255.255.255.0 no ip route-cache !