[Linuxtrent] Re: W Perl ;)
- From: Guido Brugnara <gdo@xxxxxxxxx>
- To: linuxtrent@xxxxxxxxxxxxx
- Date: Thu, 30 Sep 2004 19:59:07 +0200
Daniele Nicolodi wrote:
--cut--
8. Sintassi mostruosa. Questo è un programma perl valido:
#!/usr/bin/perl
$b = { "c" => [ { "a" => 1 } ] };
$a = [ keys(%{shift(@{$b->{'c'}})}) ];
print join("\n", @{$a}), "\n";
ma capire che cosa fa non mi pare assolutamente semplice.
Questo e' un problema di chi scrive codice, non del perl.
No. È un problema del perl che costringe ad utilizzare sintassi
astrusissime per fare anche delle cose banali. Per esempio mi viene in
mente il metodo per sapere la lunghezza di un array:
$len = scalar(@array);
ma era diffcile introdurre una funzione len() ? E poi tutto sto casino
dei reference e no reference che per farli e disfarli ci si incasina
sempre... tutto perchè in realtà per l'interprete tutti i dati sono
stringhe!
Scusa Daniele ma non posso non replicare a quanto dici in quanto non
comprendi che tutto ciò è conseguenza delle scelte di fondo del
linguaggio che ha le sue particolari caratteristiche che lo
contraddistingono da altri.
Innanzitutto deve essere chiaro che in Perl i dati base sono solo di 5 tipi:
- scalari
- vettori
- hash (detti anche vettori ad indice alfanumerico)
- riferimenti
- handle (per gli IO)
Tutti gli operatori e le funzioni hanno comportamento differenziato a
seconda del contesto in cui vengono utilizzati; quindi per l'esempio che
riporti per conoscere la lunghezza di un array io avrei scritto
semplicemente:
$len = @my_array;
che se usato per il classico ciclo 'for' lo usi così:
for($i=0; $i<@array; $I++){
........
}
Per l'interprete uno scalare non è una stringa ma contemporaneamente una
stringa ed un numero e, a seconda dell'operatore utilizzato prende il
significato di stringa o di numero.
C'è chi lo vede un vantaggio e c'è chi lo vede uno svantaggio; se lo
vuoi usare il Perl ciò deve essere usato a tuo vantaggio, non trovì?
Anche i valori 'undef' sono estremamente utili, se sai sfruttarli avrai
una marcia in più; se non ne conosci il comportamento avrai molti
'bachi' annidati nel Tuo codice..
In conclusione non cercare di usare il Perl come fosse "C" o altri
linguaggi; usalo per quello che è ed avrai in cambio molte soddisfazioni.
bye bye
Guido Brugnara
--
Per iscriversi (o disiscriversi), basta spedire un messaggio con OGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxx
Other related posts: