perlquestion
cyberscribe
<p>I am attempting to merge two arrays and not succeeding. I believe it has to do with how Perl references arrays and deals with functions ("subs") and how I do not understand either very well.</p>
<p>see the following:</p>
<code>
#start code (such as it is)
sub merge {
my (@array1,@array2) = @_;
$array1_size = @array1;
$array2_size = @array2;
for($i=0;$i<$array1_size;$i++) {
if(!lookup(@array1[$i],$array2)) {
push(@array2,($array1[$i]));
} else { break; }
}
return $array2;
}
sub lookup {
my($value,$array) = @_;
$return = FALSE;
$array_size = @array;
for($i=0;$i<$array_size;$i++) {
if($value eq @array[$i]) {
$return = TRUE;
}
}
return $return;
}
@array1 = split(/ /,"a b c d e");
@array2 = split(/ /,"c d e f");
@merged_array = merge(@array1,@array2);
#end code
</code>
<p>merged_array should now be {"a","b","c","d","e","f"}. Instead I get an infinite loop.</p>
<p>I've managed to squeak by coding perl scripts to do nslookups and DBI data access, enjoying how the language can make quick work of messy strings. But I obviously don't understand the "finer points" of the language. Any pointers (pun intended?) appreciated.</p>
<p>-RP</p>