in reply to Why is it "While Regex"ing,...Things do NOT seem to work!
Looks like $pc_name isn't getting its assignment when you think it should be. I modified to debug like this:
while (<DATA>) { $pc_name = $1, next if (/port-channel (\d+)$/); #line 14 if (m|(fc\d+/\d+)\s+\[(\w+)\]|) { print "dbg: \$pc_name:'$pc_name' \$1:'$1' \$2'$2'\n"; $Rec->{$pc_name}->{$1} = $2; } $key = $1, next if (/interface port-channel (\d+)$/); # line 17 $hash->{$key}->{$1} = $2 if (/switchport description To (\w+) ([\d +\.]+)/); #line 18 }
And the 'dbg' print to STDOUT shows that $pc_name isn't populated. I think that's your undefined key. (At least that's what seems broken to me.)
It's not my style, but I don't like that comma-next construct. It may be valid, but I'm not personally sure how it parses, so I wouldn't use it. Take Roy_Johnson's advice and restructure and I'll bet it works out just fine...
|
|---|