in reply to Why am I getting so many issues with REGEX!!!!

The "Odd number of elements in anonymous hash" warning is caused by the line:

$SwitchDesc->{$SwitchPort} ={$1} if (/switchport description (.+)/);
The expression {$1} is creating an anonymous hash reference with a key of $1 but without a value (hence the "odd number" warning; hashes should contain an even number of list items). As it stands, the hash reference will have a value of undef. You can get rid of the warning by changing {$1} to, say, {$1,42} -- assuming you want the value for this key to be 42.

Update: {$1,42} above is more clearly expressed with a fat comma: { $1 => 42 }.