File/Basename
File/CheckTree
File/Find
File/Path
Getopt/Long
Getopt/Std
I18N/Collate
IPC/Open2
IPC/Open3
Math/BigFloat
Math/BigInt
Math/Complex
Net/Ping
Search/Dict
Sys/Hostname
Sys/Syslog
Term/Cap
Term/Complete
Test/Harness
Text/Abbrev
Text/ParseWords
Text/Soundex
|
Text/Tabs
Time/Local
AnyDBM_File
AutoLoader
AutoSplit
Benchmark
Carp
Cwd
DB_File
DynaLoader
English
Env
Exporter
Fcntl
FileHandle
GDBM_File
POSIX
SDBM_File
Shell
Socket
SubstrHash
TieHash |
Occorre distinguere tra keyword di controllo del flusso ("if",
"while", "for", eccetera) dalle funzioni built-in ("print", "split",
"stat") che sono compilati con l'interprete, dalle chiamate di
libreria ("find").
Il perl ha una nutrito set di funzioni built-in, che da sole
sostituiscono gran parte dei comandi e delle chiamate di sistema
Unix. L'insieme è molto potente e ogni comando è ben congegnato per
assumere come default i parametri più comuni; per parafrasare Larry,
"in generale, essi (i comandi) fanno ciò che vuoi, a meno che non
voglia consistenza".
Le funzioni built-in sono tutte rigorosamente Unix-like, anche
nelle versioni non-Unix del Perl (un qualche standard bisogna pur
fissarlo). Ci sono varie funzioni su stringhe (split, chop, substr,
chr...), array (push, pop, shift, unshift, join) e hash (keys, values,
each...). Poi ci sono funzioni per trattare i file (chdir, unlink,
mkdir, rmdir, rename, chmod...), i processi (fork, wait, kill...), i
socket (bind, connect, listen...) e vari test su file (-e, -z, -M...),
compreso un test "euristico" per stabilire se un file è binario oppure
no (-T, -B). Ci sono anche funzioni analoghe a comandi Unix (grep,
sort, tr). Da citare ancora la open che consente di aprire non solo
file ma anche connessioni di rete e perfino eseguire un altro comando
leggendone l'output come se fosse un file.
La libreria standard è scritta in Perl, ed è naturalmente in sorgente:
comprende molte funzioni che servono ma che non ha senso avere come
built-in o che, per ragioni di portabilità non è oppurtuno avere come
built-in. Per esempio la funzione che restituisce la directory
corrente non è tra i built-in ma nella libreria standard: varia tra i
vari sistemi operativi, ed è più semplice implementarla caso per caso
direttamente in Perl.
Come tutto in Perl, il contenuto della libreria standard è molto
pratico. La find usata nell'esempio iniziale fa parte della libreria,
come pure ne fanno parte il meccanismo di gestione dei file di
database tramite hash (il meccanismo della "tie" citato prima). Per la
precisione la "tie" è un built-in che si appoggia a dei moduli che
implementano certe funzioni. Abbiamo (citiamo a campione casuale): un
modulo per analizzare i parametri (Getopt), moduli per interagire con
altri programmi (Open2 e Open3 che generalizzano il meccanismo della
open), gestione di interi, float e numeri complessi di dimensione
arbitraria (BigInt, BigFloat, Complex), benchmarking (Benchmark),
informazioni sul sistema (Hostname, Syslog), eccetera eccetera.
Ricordiamo anche le innumerevoli estensioni del perl: prima di tutto
quelle per la gestione di database: "oraperl" per il collegamento a
database Oracle, "syperl" per il collegamento a Sybase, e mi fermo qui
perchè la lista è lunga. Il perl è molto adatto per l'interazione con
i database, e siccome le varie implementazioni sono difformi tra di
loro, è nato un progetto che mira a standardizzare l'interfaccia a
database del Perl. Lo standard è denominata DBI (DataBase Interface) e
si basa sullo SQL; le varie implementazioni sono dette DBD (database
driver). Qualche implementazione è già in beta ma molte sono in alpha
o in costruzione.
Ci sono vari perl con estensioni per la gestione dell'interfaccia
utente. Ci limitiamo a citare il TkPerl, un perl con i built-in per
l'uso della libreria grafica freeware Tk, molto ben fatta e potente,
che accompagna il linguaggio Tcl. Questa libreria ha contribuito molto
al successo del Tcl (da più parti definito il Visual Basic di Unix), e
il TkPerl consente l'uso del Tk direttamente da Perl.
Infine naturalmente ci sono moltissimi script e moduli in Perl
disponibili: quasi tutto quanto è disponibile è raccolto in un
archivio detto CPAN (Comprensive Perl Archive Network) del quale
esistono innumerevoli mirror sparsi per il mondo. Per cercare
materiale sul Perl comunque un buon inizio è "http://www.perl.com".
|