I have inherited this perl code and have an issue of additional headers.
Not sure where from the code, these headers without data are coming from
This is the code
#!/usr/bin/perl
require 'ConvertDates.pl';
use DBI;
use Date::Manip ;
use CGI;
$parms = CGI->new;
#parse parameters
$start_date = $parms->param("sd");
$end_date = $parms->param("ed");
$separator= $parms->param("sep");
$HOME="/export/home/pmdss";
$CONFIG="${HOME}/config";
#$row=0;
$rows=0;
$NumOfRts=1500;
$CntOfRts=0;
print "Content-type: text/plain\n\n" ;
chomp($ds_mach=`cat ${CONFIG}/BigIron`);
chomp($dr_mach=`cat ${CONFIG}/BigIronDR`);
system("/usr/sbin/ping $ds_mach >/dev/null 2>/dev/null");
if ( ($? >> 8) eq 0 ) {
$id = "pmdss\@$ds_mach";
}
else {
system("/usr/sbin/ping $dr_mach >/dev/null 2>/dev/null");
chomp($ds_mach=`cat ${CONFIG}/BigIron`);
chomp($dr_mach=`cat ${CONFIG}/BigIronDR`);
system("/usr/sbin/ping $ds_mach >/dev/null 2>/dev/null");
if ( ($? >> 8) eq 0 ) {
$id = "pmdss\@$ds_mach";
}
else {
system("/usr/sbin/ping $dr_mach >/dev/null 2>/dev/null");
if ( ($? >> 8) eq 0 ) {
$id = "pmdss\@$dr_mach";
}
else {
print "A serious error has occurred, please contact pr
+oduction support or try again later...\n" ;
exit 0;
}
}
$cmd = "ssh $id '. ~/q; \$Q/AgnEthernetList3-1.X -s $start_date -e $en
+d_date' 2>/dev/null |";
#print "$cmd\n";
open (input , $cmd);
while ($INPUT_LINE = <input>) {
chomp($INPUT_LINE);
($dat{l_node}, $dat{l_slot}, $dat{l_ifNum}, $dat{r_node}, $dat
+{r_slot}, $dat{r_line}, $dat{r_port}, $dat{kbps}, $dat{subnetwork
}, $dat{subnetwork2}, $dat{r_domain_id}, $dat{icore_domid}, $dat{cust
+_port}, $dat{track_port}, $dat{vlan_stacking_inv}, $dat{cos_level
}) = split(/ /, $INPUT_LINE);
$KEY = $dat{l_node} . "." . $dat{l_slot} . "." . $dat{l_ifNum
+};
$key2 = int($CntOfRts++/$NumOfRts);
$cmd = "ssh $id '. ~/q; \$Q/AgnEthernetList3-1.X -s $start_date -e $en
+d_date' 2>/dev/null |";
#print "$cmd\n";
open (input , $cmd);
while ($INPUT_LINE = <input>) {
chomp($INPUT_LINE);
($dat{l_node}, $dat{l_slot}, $dat{l_ifNum}, $dat{r_node}, $dat
+{r_slot}, $dat{r_line}, $dat{r_port}, $dat{kbps}, $dat{subnetwork
}, $dat{subnetwork2}, $dat{r_domain_id}, $dat{icore_domid}, $dat{cust
+_port}, $dat{track_port}, $dat{vlan_stacking_inv}, $dat{cos_level
}) = split(/ /, $INPUT_LINE);
$KEY = $dat{l_node} . "." . $dat{l_slot} . "." . $dat{l_ifNum
+};
$key2 = int($CntOfRts++/$NumOfRts);
($nspString{$key2} = $nspString{$key2} . ":") if ($nspString{$
+key2} ne "");
$nspString{$key2} = $nspString{$key2} . "$dat{l_node},$dat{l_s
+lot},$dat{l_ifNum}";
$arraykey{$KEY} = $KEY;
$r_node{$KEY} = $dat{r_node};
$r_slot{$KEY} = $dat{r_slot};
$r_port{$KEY} = $dat{r_port};
$kbps{$KEY} = $dat{kbps};
$subnetwork{$KEY} = $dat{subnetwork};
$subnetwork2{$KEY} = $dat{subnetwork2};
$r_domain_id{$KEY} = $dat{r_domain_id};
($r_domain_id{$KEY} = $dat{icore_domid}) if ($r_domain_id{$KEY
+} eq "");
$cust_port{$KEY} = $dat{cust_port};
$track_port{$KEY} = $dat{track_port};
$vlan_stacking_inv{$KEY} = $dat{vlan_stacking_inv};
$cos_level{$KEY} = $dat{cos_level};
$rows = $rows + 1;
}
close (input);
if ($rows > 0) {
print "l_node\t" .
"l_slot\t" .
"l_port\t" .
"r_node\t" .
"r_slot\t" .
"r_line\t" .
"r_port\t" .
"kbps\t" .
"subnetwork\t" .
"toNetwork\t" .
#"pvcs\t" .
#"lcir\t" .
#"rcir\t" .
"domain\t" .
"icore_domid\t" .
"cust_port\t" .
"track_port\t" .
"vlan_stacking_inv\t" .
"cos_level\t" .
"PvcCount";
# "placeholder";
foreach $key (keys arraykey) {
($l_node,$l_slot,$l_ifNum) = split(/\./, $key);
if (substr($l_node,10,3) eq "ME2") {
if ($l_slot >= 10000) {
if ( substr($l_slot,1,1) eq "0" ) {
$L_SLOT = substr($l_slot,2,1)
+. "-" . substr($l_slot,4,1) ;
} else {
$L_SLOT = substr($l_slot,1,2)
+. "-" . substr($l_slot,4,1) ;
}
} else {
$L_SLOT = $l_slot ;
}
} else {
$L_SLOT = $l_slot ;
}
if (TRIM($toNetwork{$r_domain_id{$key}}) ne "") {
$_2Network = $toNetwork{$r_domain_id{$key}};
} else {
$_2Network = $subnetwork2{$key};
}
print "\n" . $l_node . "\t" .
$L_SLOT . "\t" .
$l_ifNum . "\t" .
$r_node{$key} . "\t" .
$r_slot{$key} . "\t" .
$r_line{$key} . "\t" .
$r_port{$key} . "\t" .
$kbps{$key} . "\t" .
$subnetwork{$key} . "\t" .
$_2Network . "\t" .
#$pvcs{$key} . "\t" .
#$lcir{$key} . "\t" .
#$rcir{$key} . "\t" .
$domain{$r_domain_id{$key}} . "\t" .
$icore_domid{$key} . "\t" .
$cust_port{$key} . "\t" .
$track_port{$key} . "\t" .
$vlan_stacking_inv{$key} . "\t" .
$cos_level{$key} . "\t" .
$PvcCount{$key};
}
} else {
print `cat nodata`;
}
sub TRIM
{
$A = shift;
$_ = $A;
s/^ +//;
s/ +$//;
$A = $_;
return $A;
}
I get data correctly for the 17 fields with headers but then I see additional columns from R to AG with no data. Where is it picking the additional columns and how to prevent it?