[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [linux_var] [OT][PERL] Quale struttura dati?



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