POD2-IT
view release on metacpan or search on metacpan
IT/perldata.pod view on Meta::CPAN
Anche l'assegnazione ad una lista (o I<slice>, che E<egrave> comunque una
lista) valutano la parte destra in contesto lista.
Quando utilizzate la direttiva C<use warnings> o l'opzione a linea
di comando B<-w>, potreste vedere degli avvertimenti riguardo l'uso
inutile ["useless use" nel messaggio, N.d.T.] di costanti o funzioni
in "contesto void" [letteralmente "vuoto", ma si preferisce lasciare
l'originale in inglese viste anche le similitudini con il tipo I<void>
disponibile in C. N.d.T.]. Il contesto void significa semplicemente che il
valore E<egrave> stato gettato via, come in un'istruzione che contiene solo
C<"fred";> o C<getpwuid(0);>. Conta comunque come contesto scalare
per funzioni che fanno distinzione fra l'essere chiamate o meno
in contesto lista.
Le funzioni definite da utente possono scegliere di comportarsi
differentemente se sono chiamate in contesto void, scalare o lista.
La maggior parte delle funzioni non avranno perE<ograve> bisogno di
preoccuparsene, poichE<eacute> sia scalari che liste sono automaticamente
interpolati in liste. Consultate L<perlfunc/wantarray> per sapere
come fare a stabilire dinamicamente in quale contesto E<egrave> stata chiamata
la vostra funzione.
IT/perlfaq3.pod view on Meta::CPAN
# identifica i file di testo
perl -le 'for(@ARGV) {print if -f && -T _}' *
# rimuove (la maggior parte de) i commenti dal programma C
perl -0777 -pe 's{/\*.*?\*/}{}gs' pippo.c
# cambia la data di un file ad un mese prima, sconfiggendo i reaper deamon
perl -e '$X=24*60*60; utime(time(),time() + 30 * $X,@ARGV)' *
# trova il primo uid inutilizzato
perl -le '$i++ while getpwuid($i); print $i'
# visualizza il path delle pagine man
echo $PATH | perl -nl -072 -e '
s![^/+]*$!man!&&-d&&!$s{$_}++&&push@m,$_;END{print"@m"}'
OK, l'ultimo in realtE<agrave> partecipava all'Obfuscated Perl Contest. :-)
=head2 PerchE<eacute> gli one-liner Perl non funzionano sul mio sistema DOS/Mac/VMS?
Di solito il problema E<egrave> che l'interprete dei comandi di questi
IT/perlfaq9.pod view on Meta::CPAN
approccio piE<ugrave> diretto E<egrave> quello di usare il formato "u"
della funzione unpack() dopo una semplice translitterazione:
tr#A-Za-z0-9+/##cd; # rimuove i caratteri non base64
tr#A-Za-z0-9+/# -_#; # converte nel formato uuencode
$lungh = pack("c", 32 + 0.75*length); # calcola la lunghezza in byte
print unpack("u", $len . $_); # effettua l'uudecode e stampa
=head2 Come ottengo l'indirizzo e-mail dell'utente?
Sui sistemi che supportano getpwuid, la variabile $<, ed il modulo
Sys::Hostname (che E<egrave> incluso nella distribuzione standard del perl),
potete probabilmente provare ad utilizzare qualcosa come:
use Sys::Hostname;
$address = sprintf('%s@%s', scalar getpwuid($<), hostname);
Le politiche aziendali sugli indirizzi e-mail possono far sE<igrave> che questo
codice generi indirizzi che il sistema di posta aziendale non accetta,
dunque dovrete chiedere gli indirizzi direttamente agli utenti, quando vi servono.
Inoltre, non tutti i sistemi su cui gira Perl rendono disponibili
queste informazioni come fa Unix.
Il modulo Mail::Util da CPAN (parte del pacchetto MailTools) fornisce una
funzione mailaddress() che cerca di supporre l'indirizzo e-mail dell'utente.
La supposizione E<egrave> piE<ugrave> intelligente rispetto al codice sopra
IT/perlfunc.pod view on Meta::CPAN
X<IPC> X<System V> X<semaforo> X<memoria condivisa> X<memoria> X<messaggio>
C<msgctl>, C<msgget>, C<msgrcv>, C<msgsnd>, C<semctl>, C<semget>, C<semop>,
C<shmctl>, C<shmget>, C<shmread>, C<shmwrite>
=item Recupero delle informazioni dell'utente e del gruppo
X<user> X<group> X<password> X<uid> X<gid> X<passwd> X</etc/passwd>
C<endgrent>, C<endhostent>, C<endnetent>, C<endpwent>, C<getgrent>,
C<getgrgid>, C<getgrnam>, C<getlogin>, C<getpwent>, C<getpwnam>,
C<getpwuid>, C<setgrent>, C<setpwent>
=item Recupero delle informazioni di rete
X<rete> X<protocollo> X<host> X<nome dell'host> X<IP> X<indirizzo> X<servizio>
C<endprotoent>, C<endservent>, C<gethostbyaddr>, C<gethostbyname>,
C<gethostent>, C<getnetbyaddr>, C<getnetbyname>, C<getnetent>,
C<getprotobyname>, C<getprotobynumber>, C<getprotoent>,
C<getservbyname>, C<getservbyport>, C<getservent>, C<sethostent>,
C<setnetent>, C<setprotoent>, C<setservent>
IT/perlfunc.pod view on Meta::CPAN
alcune di queste chiamate potrebbe non essere disponibile, oppure i dettagli
potrebbero essere un po' diversi. Le funzioni Perl influenzate da questo aspetto
sono:
C<-X>, C<binmode>, C<chmod>, C<chown>, C<chroot>, C<crypt>,
C<dbmclose>, C<dbmopen>, C<dump>, C<endgrent>, C<endhostent>,
C<endnetent>, C<endprotoent>, C<endpwent>, C<endservent>, C<exec>,
C<fcntl>, C<flock>, C<fork>, C<getgrent>, C<getgrgid>, C<gethostbyname>,
C<gethostent>, C<getlogin>, C<getnetbyaddr>, C<getnetbyname>, C<getnetent>,
C<getppid>, C<getpgrp>, C<getpriority>, C<getprotobynumber>,
C<getprotoent>, C<getpwent>, C<getpwnam>, C<getpwuid>,
C<getservbyport>, C<getservent>, C<getsockopt>, C<glob>, C<ioctl>,
C<kill>, C<link>, C<lstat>, C<msgctl>, C<msgget>, C<msgrcv>,
C<msgsnd>, C<open>, C<pipe>, C<readlink>, C<rename>, C<select>, C<semctl>,
C<semget>, C<semop>, C<setgrent>, C<sethostent>, C<setnetent>,
C<setpgrp>, C<setpriority>, C<setprotoent>, C<setpwent>,
C<setservent>, C<setsockopt>, C<shmctl>, C<shmget>, C<shmread>,
C<shmwrite>, C<socket>, C<socketpair>,
C<stat>, C<symlink>, C<syscall>, C<sysopen>, C<system>,
C<times>, C<truncate>, C<umask>, C<unlink>,
C<utime>, C<wait>, C<waitpid>
IT/perlfunc.pod view on Meta::CPAN
caratteri, i quali devono appartenere all'insieme C<[./0-9A-Za-z]>
(come C<join '', ('.', '/', 0..9, 'A'..'Z', 'a'..'z')[rand 64, rand 64]>).
Questo insieme di caratteri E<egrave> solo una raccomandazione; i
caratteri permessi nel seme dipendono esclusivamente dalla vostra
libreria crypt di sistema, e il Perl non puE<ograve> limitare i semi
accettati da C<crypt()>.
Ecco un esempio che ci assicura che chiunque faccia girare questo
programma conosca la propria password:
$pwd = (getpwuid($<))[1];
system "stty -echo";
print "Password: ";
chomp($parola = <STDIN>);
print "\n";
system "stty echo";
if (crypt($parola, $pwd) ne $pwd) {
die "Spiacente...\n";
} else {
IT/perlfunc.pod view on Meta::CPAN
passare per essere conformi a POSIX. Date un'occhiata anche
al modulo C<Term::ReadKey>, dal piE<ugrave> vicino sito
CPAN; dettagli su CPAN possono essere trovati su
L<perlmodlib/CPAN>.
=item getlogin
X<getlogin> X<login>
Implementa la funzione della libreria C che ha lo stesso nome,
la quale su molti sistemi restituisce il login corrente da
F</etc/utmp>, se presente. Se non presente, usate C<getpwuid>.
$login = getlogin || getpwuid($<) || "Kilroy";
Non prendete in considerazione C<getlogin> per l'autenticazione:
non E<egrave> sicura quanto C<getpwuid>.
=item getpeername SOCKET
X<getpeername> X<peer>
Restituisce l'indirizzo compattato (sockaddr) dell'altro capo della
connessione SOCKET.
use Socket;
$suosockaddr = getpeername(SOCK);
($porta, $indirizzo) = sockaddr_in($suosockaddr);
IT/perlfunc.pod view on Meta::CPAN
=item getpriority QUALE,CHI
X<getpriority> X<priorita`> X<nice>
Restituisce la prioritE<agrave> corrente per un processo, un gruppo di
processi, o un utente. (Consultate L<getpriority(2)>). SolleverE<agrave>
un'eccezione bloccante se usata in una macchina che non implementa
getpriority(2).
=item getpwnam NOME
X<getpwnam> X<getgrnam> X<gethostbyname> X<getnetbyname> X<getprotobyname>
X<getpwuid> X<getgrgid> X<getservbyname> X<gethostbyaddr> X<getnetbyaddr>
X<getprotobynumber> X<getservbyport> X<getpwent> X<getgrent> X<gethostent>
X<getnetent> X<getprotoent> X<getservent> X<setpwent> X<setgrent> X<sethostent>
X<setnetent> X<setprotoent> X<setservent> X<endpwent> X<endgrent> X<endhostent>
X<endnetent> X<endprotoent> X<endservent>
=item getgrnam NOME
=item gethostbyname NOME
=item getnetbyname NOME
=item getprotobyname NOME
=item getpwuid UID
=item getgrgid GID
=item getservbyname NOME,PROTO
=item gethostbyaddr INDIR,TIPOINDIR
=item getnetbyaddr INDIR,TIPOINDIR
=item getprotobynumber NUMERO
IT/perlfunc.pod view on Meta::CPAN
E<egrave> un dato potenzialmente dannoso (taint) (consultate L<perlsec>).
$passwd e $shell, la password cifrata dell'utente e la shell di login
sono anch'esse dei dati potenzialmente dannosi per il medesimo motivo.
In contesto scalare, otterrete il nome a meno che la funzione non sia
ottenuta con una ricerca per nome, nel qual caso otterrete l'altra cosa,
qualunque essa sia (se l'elemento non esiste, otterrete il valore
indefinito). Per esempio:
$uid = getpwnam($nome);
$nome = getpwuid($num);
$nome = getpwent();
$gid = getgrnam($nome);
$nome = getgrgid($num;
$nome = getgrent();
#ecc.
In I<getpw*()>, i campi $quota, $commento e $scadenza sono casi
speciali nel senso che in molti sistemi non sono supportati. Se
$quota non E<egrave> supportato, E<egrave> uno scalare vuoto.
Se E<egrave> supportato, di solito codifica il valore della quota
( run in 0.448 second using v1.01-cache-2.11-cpan-454fe037f31 )