POD2-FR
view release on metacpan or search on metacpan
FR/perldata.pod view on Meta::CPAN
l'affectation à un tableau ou à un hachage évalue la partie droite dans un
contexte de liste. L'affectation à une liste (ou à une tranche, qui est juste
une liste de toute façon) évalue aussi la partie droite dans un contexte de
liste.
Lorsque vous utilisez le pragma C<use warnings> ou l'option de ligne de
commande B<-w> de Perl, il arrive que vous voyiez des avertissements sur un
usage inutile de constantes ou de fonctions dans un «E<nbsp>contexte
videE<nbsp>» («E<nbsp>void contextE<nbsp>», NDT). Le contexte vide signifie
juste que la valeur a été abandonnée, comme pour une instruction ne contenant
que C<"fred";> ou C<getpwuid(0);>. Il compte toujours pour un contexte
scalaire pour les fonctions qui se soucient de savoir si elles sont ou non
appelées dans un contexte scalaire.
Les sous-programmes définis par l'utilisateur peuvent se soucier d'avoir été
appelés dans un contexte vide, scalaire ou de liste. La plupart des
sous-programmes n'en ont toutefois pas besoin. C'est parce que les scalaires
et les listes sont automatiquement interpolés en listes. Voir C<wantarray()>
dans L<perlfunc> pour une façon dont vous pourriez discerner dynamiquement le
contexte d'appel de votre fonction.
FR/perlfaq3.pod view on Meta::CPAN
# Identifier des fichiers-textes
perl -le 'for(@ARGV) {print if -f && -T _}' *
# enlever la plupart des commentaires d'un programme C
perl -0777 -pe 's{/\*.*?\*/}{}gs' foo.c
# Rajeunir un fichier d'un mois
perl -e '$X=24*60*60; utime(time(),time() + 30 * $X,@ARGV)' *
# Trouver le premier uid non utilisé
perl -le '$i++ while getpwuid($i); print $i'
# Afficher des chemins raisonnables vers des répertoires man
echo $PATH | perl -nl -072 -e '
s![^/+]*$!man!&&-d&&!$s{$_}++&&push@m,$_;END{print"@m"}'
OK, le dernier n'est pas très simple.E<nbsp>:-)
=head2 Pourquoi les commandes Perl à une ligne ne fonctionnent-elles pas sur mon DOS/Mac/VMSE<nbsp>?
Le problème est généralement que les interpréteurs de commandes sur
FR/perlfaq9.pod view on Meta::CPAN
approche plus directe consiste à utiliser la fonction unpack() avec le
formatage "u" après quelques translations mineuresE<nbsp>:
tr#A-Za-z0-9+/##cd; # supprime les caractères non base-64
tr#A-Za-z0-9+/# -_#; # convertit dans le format uuencode
$len = pack("c", 32 + 0.75*length); # calcule la longueur en octets
print unpack("u", $len . $_); # uudécode et affiche
=head2 Comment renvoyer l'adresse électronique de l'utilisateurE<nbsp>?
Sur les systèmes supportant getpwuid, et donc la variable $<, ainsi
que le module Sys::Hostname (qui fait partie de la distribution
standard de Perl), vous pouvez probablement essayer d'utiliser quelque
chose comme ceciE<nbsp>:
use Sys::Hostname;
$address = sprintf('%s@%s', getpwuid($<), hostname);
La politique de la compagnie sur les adresses email peut signifier
que ceci génère des adresses que le système de mail de la compagnie
n'acceptera pas, ainsi vous devriez demander les adresses email des
utilisateurs quand ceci compte. Qui plus est, tous les systèmes sur
lesquels fonctionne Perl n'acceptent pas ces informations comme sur
Unix.
Le module Mail::Util du CPAN (faisant partie du package MailTools)
procure une fonction mailaddress() qui essaye de créer l'adresse email
FR/perlfunc.pod view on Meta::CPAN
X<IPC> X<System V> X<sémaphore> X<mémoire partagée> X<mémoire> X<message> X<communication inter-processus>
C<msgctl>, C<msgget>, C<msgrcv>, C<msgsnd>, C<semctl>, C<semget>, C<semop>,
C<shmctl>, C<shmget>, C<shmread>, C<shmwrite>
=item Manipulation des informations sur les utilisateurs et les groupes
X<utilisateur> X<groupe> X<mot de passe> 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 Manipulation des informations du réseau
X<réseau> X<protocole> X<hôte> X<host> X<hostname> X<nom d'hôte> X<IP> X<adresse> X<service>
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>
FR/perlfunc.pod view on Meta::CPAN
systèmes Unix courants. Dans des environnements non-Unix, les fonctionnalités
de certains appels systèmes Unix peuvent manquer ou différer sur certains
détails. Les fonctions Perl affectées par cela S<sont :>
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>
FR/perlfunc.pod view on Meta::CPAN
aléatoires, ces caractères doivent provenir de l'ensemble
C<[./0-9A-Za-z]> (Exemple C<join '', ('.', '/', 0..9, 'A'..'Z',
'a'..'z')[rand 64, rand 64]>). Cet ensemble de caractères n'est
qu'une recommandation car les caractères réellement acceptables dans
SEL dépendent de le fonction crypt de votre bibliothèque système et
Perl ne peut pas connaître les restrictions exactes.
Voici un exemple qui garantit que quiconque lance ce programme connaît son
propre mot de S<passe :>
$pwd = (getpwuid($<))[1];
$salt = substr($pwd, 0, 2);
system "stty -echo";
print "Password: ";
chop($word = <STDIN>);
print "\n";
system "stty echo";
if (crypt($word, $salt) ne $pwd) {
die "Sorry...\n";
FR/perlfunc.pod view on Meta::CPAN
La fonction C<POSIX::getattr()> peut faire ceci de façon plus portable sur des
systèmes compatibles POSIX. Voir aussi le module C<Term::ReadKey> de votre
site CPAN le plus proche. Les détails sur CPAN peuvent être trouvés dans
L<perlmodlib/CPAN>.
=item getlogin
X<getlogin> X<login>
Implémente la fonction de la bibliothèque C portant le même nom et qui, sur la
plupart des systèmes, retourne le login courant à partir de F</etc/utmp>, si
il existe. Si l'appel retourne null, utilisez C<getpwuid()>.
$login = getlogin || getpwuid($<) || "Kilroy";
N'utilisez pas C<getlogin()> pour de l'authentificationE<nbsp>: ce n'est pas aussi
sûr que C<getpwuid()>.
=item getpeername SOCKET
X<getpeername> X<peer> X<pair>
Renvoie l'adresse sockaddr compactée (voir pack()) de l'autre extrémité de la
connexion SOCKET.
use Socket;
$hersockaddr = getpeername(SOCK);
($port, $iaddr) = unpack_sockaddr_in($hersockaddr);
FR/perlfunc.pod view on Meta::CPAN
utiliser le module CPAN C<Linux::Pid>.
=item getpriority WHICH,WHO
X<getpriority> X<priorité> X<nice>
Renvoie la priorité courant d'un processus, d'un groupe ou d'un
utilisateur. (Voir L<getpriority(2)>.) Cela engendra une exception si on
l'utilise sur une machine qui n'implémente pas getpriority(2).
=item getpwnam NAME
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...
=item getgrnam NAME
=item gethostbyname NAME
=item getnetbyname NAME
=item getprotobyname NAME
=item getpwuid UID
=item getgrgid GID
=item getservbyname NAME,PROTO
=item gethostbyaddr ADDR,ADDRTYPE
=item getnetbyaddr ADDR,ADDRTYPE
=item getprotobynumber NUMBER
FR/perlfunc.pod view on Meta::CPAN
informations. Ce n'est donc pas une information de confiance. Par conséquent
$gcos est souillée (voir L<perlsec>). Les champs $passwd, $shell ainsi que
l'interpréteur de commandes (login shell) et le mot de passe crypté sont aussi
souillés pour les mêmes raisons.
Dans un contexte scalaire, vous obtenez le nom sauf lorsque la fonction fait
une recherche par nom auquel cas vous récupérerez autre chose. (Si une
entrée n'existe pas vous récupérerez la valeur undef.) Par exempleE<nbsp>:
$uid = getpwnam($name);
$name = getpwuid($num);
$name = getpwent();
$gid = getgrnam($name);
$name = getgrgid($num);
$name = getgrent();
#etc.
Dans I<getpw*()>, les champs C<$quota>, C<$comment> et C<$expire> sont
des cas spéciaux dans le sens où ils ne sont pas supportés sur de
nombreux systèmes. Si C<$quota> n'est pas supporté, c'est un scalaire
vide. Si il est supporté, c'est habituellement le quota disque. Si le
FR/perlop.pod view on Meta::CPAN
l'opérande gauche est vrai, l'opérande droit n'est même pas évalué. Le
contexte scalaire ou de liste se propage vers l'opérande droit si il est
évalué.
Les opérateurs C<||>, C<//> et C<&&> renvoient la dernière valeur
évaluée (contrairement aux homologues en C, C<||> et C<&&> qui
renvoient 0 ou 1). Donc, un moyen raisonnablement portable de trouver
le répertoire home peut S<être :>
$home = $ENV{HOME} // $ENV{LOGDIR} //
(getpwuid($<))[7] // die "You're homeless!\n";
En particulier, cela signifie que vous ne devriez pas les utiliser pour
choisir entre deux agrégats dans une <affectation :>
@a = @b || @c; # c'est pas bon
@a = scalar(@b) || @c; # voila ce que ça signifie
@a = @b ? @b : @c; # cela marche très bien par contre
Pour remplacer d'une manière plus lisible l'usage de C<&&>, C<//> et
C<||> pour contrôler un flot d'opérations, Perl propose les opérateurs
FR/perlport.pod view on Meta::CPAN
Pas utile. (S<RISC OS>)
=item getgrnam NAME
Non implémenté. (S<Mac OS>, Win32, VMS, S<RISC OS>)
=item getnetbyname NAME
Non implémenté. (S<Mac OS>, Win32, Plan9)
=item getpwuid UID
Non implémenté. (S<Mac OS>, Win32)
Pas utile. (S<RISC OS>)
=item getgrgid GID
Non implémenté. (S<Mac OS>, Win32, VMS, S<RISC OS>)
=item getnetbyaddr ADDR,ADDRTYPE
FR/perltie.pod view on Meta::CPAN
nouvel objet (probablement mais pas nécessairement une table de hachage
anonyme).
Voici le S<constructeur :>
sub TIEHASH {
my $self = shift;
my $user = shift || $>;
my $dotdir = shift || '';
croak "usage: @{[&whowasi]} [USER [DOTDIR]]" if @_;
$user = getpwuid($user) if $user =~ /^\d+$/;
my $dir = (getpwnam($user))[7]
|| croak "@{[&whowasi]}: no user $user";
$dir .= "/$dotdir" if $dotdir;
my $node = {
USER => $user,
HOME => $dir,
LIST => {},
CLOBBER => 0,
};
( run in 0.359 second using v1.01-cache-2.11-cpan-8d75d55dd25 )