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.
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.