[FoLUG] perl: operazioni con gli array

chris osu chris_osu_edu@yahoo.com
Lun 22 Gen 2007 19:29:36 CET


Secondo me non conviene indicizzare gli array con perl.
  In molti libri si legge che perl e' lento perche' i programmatori per testarlo lo usano come fosse il C.
  Il perl e' un linguaggio per gente che ha  bisogno di trovare una scorciatoia nella vita, che non si assume responsabilita', un malato della sindrome di Peter Pan che rifiuta le regole ferree di un qualsiasi C++ o JAVA.
  Tra loro troverete, ubriaconi, prositute, biologi cacciati a pedate dall'albo mentre cercavano di trovare un genomico di 1000 righe senza mai sospettare il perl di una qualche caratteristica ad oggetti.
  Si aggirano per la rete cercando uno script che non riescono a creare sperando che qualcun'altro lo abbia fatto per loro.
  Sono i cosiddetti perdenti... non vanno al cinema, non leggono, raramente vanno in palestra  e solo durante il Thanks Giving  si lavano. 
  Sono i cosiddetti mentecatti o perdenti... alle volte cercano di penetrare qualche sistema e regolarmente vengono scoperti come i piu' vili dei lamers.
  Come ha descritto bene quel tale: "Sarebbe stato meglio per loro se non fossero mai nati, per loro saranno solo pianti e stridori di denti".
   
  By the way... Ti conviene convertire tutto l'array in una stringa e poi splittarlo di nuovo in un altro array.
   
  $stringa=join "", @tuoarray;
   
  #demarchi Query= con !Query=
  $stringa=~ s/Query=/!Query=/g;
   
  #demarchi Identities con !Identites
$stringa=~ s/Identities/!Identities/g;
@array4= split(/!/,$stringa);
   
  Cosi' avrai:
  Query # su una riga
  Identities Score Strand ... ecc # sull'altra riga
   
   
  

ivan <i.f-ml01@darthxiong.net> wrote:
  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

_______________________________________________
FoLUG mailing list
FoLUG@lists.linux.it
http://lists.linux.it/listinfo/folug per cancellarsi dalla lista

 
---------------------------------
The fish are biting.
 Get more visitors on your site using Yahoo! Search Marketing.


Maggiori informazioni sulla lista FoLUG