in reply to RegEx Blues

Hm, well...

If you just want to print these values out:

while (<DATA>) { chomp; print "\n$1 =" and next if /^(interface\s.+)/; print "$1" and next if /^\s+(switchport description\s.+)/; }

If getting them into a hash is the point:

my (%data, $last); while (<DATA>) { #~ print STDERR $_; chomp; if (/^(interface\s.+)/) { $last = $1; $data{$last} = ''; next; } $data{$last}=$1 and next if /^\s+(switchport description\s.+)/; } ##now print for ( sort keys %data ) { print "$_ = $data{$_}\n" }

The main problems you're having are illuminated in the posts above, so I won't belabor them. Just read perlre and perlretut again, and maybe pick up a copy of Mastering Regular Expressions (ISBN 0596002890).

<-radiant.matrix->
Larry Wall is Yoda: there is no try{} (ok, except in Perl6; way to ruin a joke, Larry! ;P)
The Code that can be seen is not the true Code
"In any sufficiently large group of people, most are idiots" - Kaa's Law