Problem mit splice

Hi,

ich fange gerade erst an mich mit Perl zu beschäftigen und habe einen Fehler den ich im Moment nicht verstehe. Ich hoffe ihr könnt mir helfen:

Ich habe ein Skript geschrieben, daß eine Funktion enthält, die mit einem Array arbeitet. Dieser Array besteht aus Strings und soll in dieser Funktion unter Umständen so manipuliert werden, daß Einträge entfernt werden soll.
Für das entfernen ist der Index bekannt. Also habe ich folgendes geschrieben:

splice (@array, $i, 1);

Die Funktion gibt den Array zurück. Wenn ich jetzt außerhalb der Funktion die Größe des Arrays ausgeben lasse ist es immer noch die Ausgangsgröße. Die Einträge die entfernt werden sollten scheinen zudem nur durch „“ ersetzt worden zu sein.
Ich will aber, daß der Array schrumpft… Wie kann ich das machen?

Vielen Dank,
RBr2000

Hallo,

Ich habe ein Skript geschrieben, daß eine Funktion enthält,
die mit einem Array arbeitet. Dieser Array besteht aus Strings
und soll in dieser Funktion unter Umständen so manipuliert
werden, daß Einträge entfernt werden soll.
Für das entfernen ist der Index bekannt. Also habe ich
folgendes geschrieben:

splice (@array, $i, 1);

Die Funktion gibt den Array zurück. Wenn ich jetzt außerhalb
der Funktion die Größe des Arrays ausgeben lasse ist es immer
noch die Ausgangsgröße. Die Einträge die entfernt werden
sollten scheinen zudem nur durch „“ ersetzt worden zu sein.
Ich will aber, daß der Array schrumpft… Wie kann ich das
machen?

ich habe ehrlich gesagt nicht verstanden,
was Du da wirklich gemacht hast. Am besten
Du schreibst mal konkret, was wo nicht geht
(mit Quelltext).

Folgendes geht bei mir:

 use strict;
 use warnings;
 
 my @array = (
 '1. (0) Das ist ein',
 '2. (1) Array mit vielen',
 '3. (2) Strings drin',
 '4. (3) welches wir jetzt',
 '5. (4) zerspanen wollen' );

 print "Array vorher: ", scalar @array, " elemente\n";
 my $index = 2;
 my $deleted;
 
 $deleted =
 remove\_from(\@array, $index);

 print "Array nachher: ", scalar @array, " elemente\n";
 print "geloescht: \"$deleted\" \n";


 sub remove\_from
{
 my ($ar, $offset) = @\_;
 splice @$ar, $offset, 1
}

Grüße

CMБ