[FoLUG] perl: operazioni con gli array

ivan i.f-ml01@darthxiong.net
Lun 22 Gen 2007 09:40:44 CET


On 2007-01-22 03:50, simona bazzocchi wrote:
> Salve ho un array cosi' fatto: (ogni elemento e' un su una linea diversa, non sempre il numero di righe e' uguale tra una Query= e un'altra Query=)
>    
>   Query=hsa1
>   Identities90
>   Length99
>   Score98
>   Strand9
>   Query=hsa2
>   ...
>    
>   Vorrei trasformare un array siffatto con un altro dove ongni Query= sta su una riga e tutto il resto sulla seconda, tipo:
>   Query=hsa
>   Identities90 Length99 Score98 Strand9
>   Query=hsa94
>   Identities90 Length99 Score98 Strand9
>    
>   Non vorrei usare aperture di file perche' lo devo mettere su di una pagina html,Ho provato con push ma ho dei problemi.
>   Grazie
>    
>   Grazie

se il numero di elementi per query e' uguale ( es., Query= e' sempre
negli indici multipli di 5 ) puoi fare:

----
@arrayoriginale = qw( Q0 1 2 3 4 Q1 a b c d Q2 1 2 3 4 Q4 a b c d );

for ( $i = 0 ; $i <= ( $#arrayoriginale/5 ) ; $i++ ) {
    $nuovoarray[2*$i]   = $arrayoriginale[5*$i];
    $nuovoarray[2*$i+1] = join " ", ( @arrayoriginale[5*$i+1 .. 5*$i+4] );
}

{ local $"="]\n["; print "[@nuovoarray]\n" }
----

non e' proprio il max dell' efficienza computazionale, ma e' leggibile.

-- 
  (@_ Ivan Fabris, S. Sofia (FC,it) PowerPC e Debian GNU/linux SID _*)
  //\         www.folug.org    pgp key @ www.keyserver.net         /\\
  V_/_                  lunga vita e prosperita'                  _\_V



Maggiori informazioni sulla lista FoLUG