"liftman" <
liftman_...@moredifficult.org> ha scritto nel messaggio
news:mfv26i$17r$1...@speranza.aioe.org...
>> Ti consiglio funzioni come splice. C'č una buona guida qui:
>
> ci butto un occhio...
> Ho dato una scorsa sommaria e credo di aver capito che se modifico cosě:
>
> foreach $indice (0.. $#array) {
> if ($array[$indice] eq 'pippo') {
> $elemento = $indice;
> }
> splice (@array, $elemento, 1);
> }
>
> ottengo il risultato prefisso, o c'č un sistema migliore?
Mi rispondo da solo... non funziona :-)
il codice incriminato č questo:
foreach $indice (0.. $#database) {
if ($database[$indice] eq $temp) { #riga 108
$elemento = $indice;
}
splice (@database, $elemento, 1); #riga 111
store(\@database, "$file");
}
il risultato č che ottengo questo: (e l'elemento non viene cancellato)
Argument "" isn't numeric in splice at
prova.pl line 111, <GEN0> line 46.
Use of uninitialized value in string
prova.pl line 108, <GEN0> line 46.
Quindi dopo miliardi (si ok, erano qualcuna meno...) di ricerche e letture
di testi piů o meno tutti uguali (č uno dei problemi della rete, un pirla
scrive un minitutorial, e 3 milioni lo copiano sui loro siti fetenti, e lo
spacciano per proprio, magari senza nemmeno sapere se funziona...) ho
trovato quello che mi serviva, qua:
http://stackoverflow.com/questions/174292/what-is-the-best-way-to-delete-a-value-from-an-array-in-perl
ed ho modificato il mio script cosě:
my $index = 0;
$index++ until $database[$index] eq $temp;
splice (@database, $index, 1);
e pare funzionare! :-)
Avrei un altro quesito, ma apro thread apposito..