perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 31
Click for quality!




11.02.2012 / 12:47

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


BeitragProbleme mit Array als Referenz bei sub Programmen
Seitenanfang
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

Beitragre: Probleme mit Array als Referenz bei sub Programmen
Seitenanfang
Hab den Fehler:
sub insertsort {
Hatte da die Definiton
my $laenge;
$laenge = $#array;
...
}
Diese produzierte den Fehler.
Weiß aber immer noch nicht was jetzt falsch war.
Mit
$laenge = @array;
gehts.

Datum: 11.08.2005-12:59

-






-
-