On Fri, Mar 20, 2009 at 04:04:30PM +0100, 0bscure wrote:
> Domanda per chi si diletta di Perl almeno al livello monaco corrotto
er.
> Il dato di input e' composto da un'associazione univoca NN STRINGA
> del tipo:
> 11 PERL
> 2 LINUX
>
> (Il separatore tra i due campi e' a mia discrezione)
>
> Ora qual'e' secondo voi la struttura dati tranquilla adatta per una
> memorizzazione per accesso sequenziale? (Non ho un db)
> Io pensavo ad un array a 2 dimensioni.
> Da qui il problema:
>
> [cut]
> while (<SPOOL>)
> {
> chomp;
Se sei sicuro che l'ultimo carattere è sempre \n puoi usare chop.
> ($str, $banned) = split(/;/);
> push(@BANLIST,$str,$banned);
Così stai pushando due elementi. Questo dovrebbe essere:
push @BANLIST, [ $str, $banned ]; # arrayref
oppure
push @BANLIST, { $str => $banned }; # hashref
in questo modo mantieni l'ordine in cui leggi gli elementi, e ci accedi
semplicemente con
- $banlist[0]; # [ "LINUX", 11 ] oppure { LINUX => 11 }
- $banlist[0]->[0]; # "LINUX"
- $banlist[0]->{LINUX}; # 11
A seconda di quale delle prime due hai usato. Ma la vera domanda è:
dopo che li hai salvati in ordine cosa ci devi fare? Ci sono molte
altre soluzioni.
--
Fernando Vezzosi
qw(MDAx MTAw MDEw MDEx MDAw _5 MTEw _6 _1 _5 _5 _4 _2 _2 _6
MTEx _1 _5 _5 _4 _5 _2 _6 _1 _1 _2 _2 _3 _5 _5 _6 _1 _1 _2
_5 _4 _3 _5 _2 _5 _1 _2 _3 _4 _5 MA==)
Attachment:
signature.asc
Description: Digital signature