Disponibilité d'une méthode: UNIVERSAL::can

Créez un scripte Perl qui lit /etc/passwd , sépare les champs, les stocke dans une matrice et qui à partir de cette matrice imprime tous les utilisateurs, ainsi que leur ligne de commande et le champs GECKOS.
\begin{reponse}
\par
\image{images/exo-passwd.pl.1.eps}{0}{}
\image{images/exo-passwd2.pl.1.eps}{0}{}
\image{images/exo-passwd2.pl.2.eps}{0}{}
\par
\end{reponse}

Variante du script précédent, écrivez une fonction qui lit /etc/passwd, qui ignore les entrées qui ont comme shell nologin/false, qui ignore les utilisateurs d'une liste (passée par argument) et qui retourne une liste indexée ou le nom de compte est la clé et le reste des informations de l'utilisateur comme valeur.

Une autre fonction prendra comme argument un nom d'utilisateur et retourne une liste anonyme avec le nom de compte, la racine du compte et la ligne de commande de ce compte.
\begin{reponse}
\par
\image{images/exo-admin1.pm.1.eps}{0}{}
\image{images/exo-admin1.pm.2.eps}{0}{}
\par
\end{reponse}

Écrivez une fonction qui utilise la commande système mail pour envoyer un mail, l'adresse, le titre et l corps du mail sont passés par argument.
\begin{reponse}
\par
\image{images/exo-admin2.pm.1.eps}{0}{}
\par
\end{reponse}

Fonction très similaire à la précédente, par contre au lieu de la commande mail, utilisez directement le programme /usr/lib/sendmail, l'entête est généré au vol.
\begin{reponse}
\par
\image{images/exo-admin3.pm.1.eps}{0}{}
\par
\end{reponse}

Écrivez une fonction que prend comme argument un nom d'utilisateur et un répertoire. Ce répertoire ainsi que la boite d'entrée mail doivent être emballés dans un fichier archive, ce fichier archive doit être stocké dans /etc/archive.
\begin{reponse}
\par
\image{images/exo-admin4.pm.1.eps}{0}{}
\par
\end{reponse}

Écrivez une fonction qui change la ligne de commande d'un utilisateur, dont le nom est passé en argument, en nologin.
\begin{reponse}
\par
\image{images/exo-admin5.pm.1.eps}{0}{}
\par
\end{reponse}

Faites des fonctions précédentes un module
\begin{reponse}
rassembler toutes les fonctions en 1 fichier, rajouter 1 dans la
dernière ligne.
\end{reponse}

Écrivez un scripte Perl qui utilise le module de la question précédente, qui prend comme argument une liste de noms de comptes, qui teste la validité du nom de compte, extrait le répertoire racine du compte, archive l'utilisateur, lui envoit un mail de notification, et qui vire le répertoire racine de l'utilisateur après qu'il ait changé la shell de l'utilisateur.


\begin{reponse}
\par
\image{images/exo-admin.pl.1.eps}{0}{}
\par
\end{reponse}

Écrivez un script qui imprime la table de multiplication de 1 à 10
\begin{reponse}
\par
\image{images/exo-tablemult.pl.1.eps}{0}{}
\par
\end{reponse}

Même exercice qu'auparavent, mais demandez à l'utilistateur de fixer la limite de la table.
\begin{reponse}
\par
\image{images/exo-tablemult-var.pl.1.eps}{0}{}
\par
\end{reponse}

Écrivez un script qui saisisse des noms de personnes et leur numéros de téléphone, séparés par une virgule. Arrétéz la saisie sur une ligne vide.Stoquez ces données dans un tableau, et imprimez le contenu du tableau.


\begin{reponse}
\par
\image{images/exo-adresse1.pl.1.eps}{0}{}
\image{images/exo-adresse1.pl.2.eps}{0}{}
\par
\end{reponse}

Le même problème qu'avant mais maintenant stoquez les données obtenues dans un fichier.


\begin{reponse}
\par
\image{images/exo-adresse2.pl.1.eps}{0}{}
\image{images/exo-adresse2.pl.2.eps}{0}{}
\par
\end{reponse}

Toujours le même problème qu'avant mais maintenant récupérez au lancement les données du fichier.


\begin{reponse}
\par
\image{images/exo-adresse3.pl.1.eps}{0}{}
\image{images/ex...
...se3.pl.3.eps}{0}{}
\image{images/exo-adresse3.pl.4.eps}{0}{}
\par
\end{reponse}

Toujours le même problème qu'avant mais maintenant triez les données selon le nom de famille.


\begin{reponse}
\par
\image{images/exo-adresse4.pl.1.eps}{0}{}
\image{images/ex...
...se4.pl.3.eps}{0}{}
\image{images/exo-adresse4.pl.4.eps}{0}{}
\par
\end{reponse}

Dans un souci de clarté transferez les fonctionalités centrales dans un module.


\begin{reponse}
\par
\image{images/carnet.pm.1.eps}{0}{}
\image{images/carnet.p...
...et.pm.4.eps}{0}{}
\image{images/exo-adresse4b.pl.1.eps}{0}{}
\par
\end{reponse}

Écrivez un script qui lise la base de donnée laissée par l'exercice précédent et enlevez l'entree du nom fourni par l'utilisateur.


\begin{reponse}
\par
\image{images/exo-adresse5.pl.1.eps}{0}{}
\image{images/exo-adresse5.pl.2.eps}{0}{}
\par
\end{reponse}

Dans le cas du script de gestion d'addresses, rajoutez un test si la valeur d'entrée donnée est valide, sinon terminez le programme avec un message d'erreur approprié, en utilisant la librairie carp.


\begin{reponse}
\par
\image{images/exo-adresse6.pl.1.eps}{0}{}
\par
\end{reponse}

Dans le cas du script de gestion d'addresses, rajoutez une gestion par arguments de ligne de commande, rajoutez l'appel de l'aide de ce programme, le rajout d'une entrée, le listage des entrées, l'enlevage d'une entrée, en utilisant Getopt.


\begin{reponse}
\par
\image{images/exo-adresse7.pl.1.eps}{0}{}
\par
\end{reponse}

Dans le cas du script de gestion d'addresses, les colonnes sont fixées, changez ce paradigme en utilisant pour les lignes du tableau un tableau indexé. Montrez ce que cela change, et exposez l'utilité de ce paradigme.


\begin{reponse}
\par
\image{images/carnet2.pm.1.eps}{0}{}
\image{images/carnet2...
.../carnet2.pm.5.eps}{0}{}
\image{images/carnet2.pm.6.eps}{0}{}
\par
\end{reponse}

Dans le cas du script de gestion d'addresses nous introduisons des cathégories. Chaque cathégorie à son set de champs, définis dans un fichier À part. Écrivez une routine de saisie qui charge une ligne en fonction de la cathégorie demandée.


\begin{reponse}
\par
\end{reponse}

Maintenant, écrivez une sorte de serveur mail: une fonction qui reçoit les différentes lignes de l'entête et le corps du message. Y a t'il moyen d'utiliser de manière judicieuse des listes indexées?


\begin{reponse}
\par
\end{reponse}