liftman wrote:
> se eseguo :print @array; #ottengo pincopallinotiziocaio
> se però faccio una cosa tipo questa:
> if (@array=~ /tizio/) {
> print "ho trovato tizio \r\n";
> }
>
> non ottengo niente perchè in questo caso @array mi ritorna solo il
> numero degli elementi
Infatti, perché lo stai utilizzando in contesto di lista.
Per approfondire il concetto generale di contesto ti consiglio di
leggere il documento seguente:
<
http://www.geek0x90.org/articoli/contesto_perl.txt>
, quindi se modifico così:
> if (@array=~ /4/) {
> print "ho trovato 4 elementi \r\n";
> }
Qua potresti usare grep, tipo:
if ( grep( /^$valore$/, @array) ) {
print "trovato";
}
ma ti consiglio di usare il modulo List::Util.
> La mia domanda da pivello è pure semplice.... se
>
> print @array;
>
> mi ritorna una stringa con tutti gli elementi uno dopo l'altro, perchè
>
> $stringona = @array;
>
> mi riporta invece 4? esiste un modo oltre a foreach per concatenare
> tutti gli elementi di un array?
Perché in un contesto scalare, @array è come dire scalar(@array) ovvero
ti dice quanti elementi ci sono nell'array (diversamente da $#array che
ti dà l'indice dell'ultimo elemento dell'array).
Leggiti quel documento e ne riparliamo. Ciao.