in reply to trying to use join in a loop

In this particular case, using join and map as proposed in other answers is the most straightforward way to obtain the correct result, but for your information, in other places where you would need a for loop, you can access the values directly rather than use the index. For example:

for (my $i=0;$i < $Numfirst;$i++) { print "Hello $nfirst[$i]\n"; }
Can be written as:
for my $name (@nfirst) { print "Hello $name\n"; }

And if the content of the loop is a single statement perl allows you to put the for afterwards, by putting the value in the default variable $_:
print "Hello $_\n" for @nfirst;

Edit: added missing \n to have three times the same output.