[Tech] array in perl

Franco Bagnoli franco.bagnoli@unifi.it
Lun 21 Ago 2006 23:17:19 CEST


Il 21/08/06, Leonardo Boselli<leo@dicea.unifi.it> ha scritto:
> non sono riuscito a capire bene come in perl si faccia una cosa che in C
> `e quasi banale:
> io ho una serie di record su un file, con i campi separati da virgole,
> li posso considerare tutti come stringhe.
> occorre che li carichi su un array n*15 (con n che puo` essere tra 1 e
> 600 e non so a priori), quindi ordini questo array in modo che possa poi
> stamparne alcuni campi in un certo ordine.
> Dovrei ordinarli prima in base al primo campo, e poi in base al quinto.
> in C ci sono diverse funzioni di ordinamento, ma in perl quale `e il modo
> pi`u spiccio ?

qualcosa tipo (non provato):

1) caricare il tutto su un array di array, usando split e push
(perldoc -f split)

while (<>) {
  push @array, split /,/; # non sono sicuro che funzioni, forse meglio
push @array, [split /,/];
}

e poi perldoc -f sort

sort usando una tringa temporanea (schwarztian tranform??)

@sorted = sort {"$a[0]$a[4]"  cmp "$b[0]$b[4]"} @array

oppure , supponendo il primo campo numerico e il secondo alfanumerico

@sorted = sort {$a[0] <=> $b[0] || $a[4]  cmp $b[4]} @array

insomma, senza sapere che tipo di dati ci sono...

--
Franco Bagnoli <franco.bagnoli@unifi.it> <franco.bagnoli@gmail.com>
Dipartimento di Energetica & Centro Dinamiche Complesse
Universita' di Firenze, via S. Marta, 3 I-50139 Firenze, Italy.
Tel. +39 0554796422, fax: +39 055471787


-- 
Franco Bagnoli <franco.bagnoli@unifi.it> <franco.bagnoli@gmail.com>
Dipartimento di Energetica & Centro Dinamiche Complesse
Universita' di Firenze, via S. Marta, 3 I-50139 Firenze, Italy.
Tel. +39 0554796422, fax: +39 055471787



Maggiori informazioni sulla lista flug-tech