I'm not sure this is really "help," but rewriting like the following may help you track it down:
#!c:\perl\bin\perl -w
use strict; # you know you wanted this, right?
open(NB, "nbt.csv") or die "Can't open input nbt.csv\n";
# NBT.CSV simply contains ip addresses - one per line
while(<NB>)
{
chomp $_;
my $line="$_".","; # using my eliminates the undef
my @nbtstat = `nbtstat -a $_`; # my will make you happy
for ($j=0; $j<=$#nbstat;$j++) # $# is the last index
{
my $short=substr($nbtstat[$j],0,15);
chomp $short;
unless ($line=~m/$short/)
{$line=$line.",".$short;}
}
print "$line\n";
}
close(NB);
Update: Could we see an example of the output you are trying to achieve (generated by hand if necessary)?