Hallo,ich bin neu in der Perl Programmierung und habe da noch ein kleines Problem bei der Übergabe von Arrays als Referenz.
Ich habe mir eine kleine Suchfunktion geschrieben die mittels binärer Suche das Element sucht und die Position zurückgibt an der es gefunden wurde. Das Array das übergeben wird ist eine Referenz:
Diese Funktion funktioniert auch soweit
sub binsearch {
my($array, @array, $bereich,$li,$re,$wert,$laenge);
my $gefunden = 0;
$wert =$_[0];
@{$array} = $_[1];
$laenge = @array;
$li=0;
$re = $laenge;
do {
$bereich =int(($re+$li) /2);
if ($array->[$bereich] == $wert) {
$gefunden = 1;
}
elsif ($wert < $array->[$bereich]) {
$re = $bereich - 1;
}
else {
$li = $bereich + 1;
}
}until (($li >= $re) || ($gefunden));
return $gefunden,$bereich;
}
Diese Funktion verwende ich nun in einer Einfügefunktion um Werte in ein Array sortiert einzufügen wenn sie noch nicht enthalten sind:
sub insertsort {
# lokale Variablendeklaration + zuweisungen
... my ($wert, @array)=@_; ....
push (@array,$wert) if ($laenge==0);
#Hier das Element suchen
($gefunden,$bereich) = binsearch($wert,\@array);if( !$gefunden ) {
if (($bereich ==0) && ($wert < $array[0])) # ZEILE 121
{
unshift(@array,$wert);
return @array;
}
.....
Weitere Abfragen
....
$array[$j] = $wert; # ZEILE 143
}
Beim Ausführen bekomm ich dann die Fehlermeldung
use of uninitialized value in numeric lt (<) at wws_checker.pl line 121.
Modification of non-creatable array value attempted, subscript -1 at wws_checker.pl line 143.
Ich weiß nun nicht was ich falsch gemacht habe, das Skript funktioniert wenn ich in der Funktion binsearch keine Referenz verwende.
Wäre für jede Hilfe dankbar
Gruß
Frank
Datum: 11.08.2005-12:04
