use strict; use warnings; use Data::Dumper; my %hash = (); { local $/ = "interface "; while() { my ($key) = /description\s+(.*)/; next if $key =~ /^\s*$/; my ($value) = /switchport trunk allowed vlan\s*(.*)/; $hash{$key} = $value; } print Dumper \%hash; __DATA__ .....