http://qs321.pair.com?node_id=11133003


in reply to Cisco to Juniper - parser help

A major problem with your code are these lines:

if ($neighbor eq undef){} elsif ($vcid eq undef) {} else {

undef can NOT be used in a comparison, you have to use the defined function to determine if a variable is defined or not.

You also don't need the if/elsif/else structure:

if ( !defined $neighbor && !defined $vcid ) {

Another problem is a lot of "uninitialized value" messages which can be fixed by initializing all your variables.

my $vcid; my $tag; my @splittag; my $pop; my $xcon; my $cos; my @splitcos; # change those to: my $vcid = ''; my $tag = ''; my @splittag; my $pop = ''; my $xcon = ''; my $cos = ''; my @splitcos;
$unit = $splitunit[2]; # change to: $unit = $splitunit[2] || '';
$vlanida = $splitvlan[2]; $vlanidb = $splitvlan[4]; # change to: $vlanida = $splitvlan[2] || ''; $vlanidb = $splitvlan[4] || '';
$cos = $splitcos[2]; # change to: $cos = $splitcos[2];
$neighbor = $splitxc[1]; $vcid = $splitxc[2]; # change to: $neighbor = $splitxc[1] || ''; $vcid = $splitxc[2] || '';
$pop = $splittag[4]; # change to: $pop = $splittag[4] || '';
if ($neighbor eq undef){} elsif ($vcid eq undef) {} else { # change to: if ( length $neighbor && length $vcid ) {

Try running your code with those changes and post again with your feedback.