[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