# 5.6. Ajout des gestionnaires de fichiers à la principale boucle sélectionnée ()

Comme sur la version 2.2, des scripts peuvent ajouter des gestionnaires de fichiers à la boucle principale, et définir des points d'insertion dessus pour obtenir un contrôle lorsque les données sont disponibles.

Il (est assigné( au script d'ouvrir d'abord le gestionnaire de fichiers, qui peut se référer à une connexion réseau, un tty, un tube, comme dans `open (FH, "program |")`, etc.

Lors du traitement des supports de communication avec le réseau, il est fortement recommandé d'utiliser l'API fourni par sirc `&connect, &listen, &accept, &resolve, &newfh` et `$bindaddr`) plutôt que d'utiliser les fonctions perl brutes. Ceci aura pour effet de faire travailler ces scripts de façon transparente sur les proxies des supports de communication, lorsque le module de communication est chargé. Si vous avez besoin d'une fonctionnalité supplémentaire, bien que (comme le support de communication UDP, ou admettant des connexions multiples depuis le support d'écoute), vous puissiez utiliser les fonctions propres de perl.

Pour avoir de nouveau le contrôle lorsque les données sont disponibles sur un gestionnaire de fichiers, vous pouvez l'ajouter à la définition de fh sirc `select()s` (from), avec `&addsel($fh, "somename", flag);` où sel_name est le sous-programme qui prendra le contrôle à nouveau lorsqu'il y aura un message à lire, et l'indication 1 si vous voulez que sirc protége votre connexion et la fractionne en lignes, et 0 si vous ne voulez pas du tout que sirc touche à vos données..

La convention pour les sous-programmes `sel_somename` est différente dans les deux cas suivants :

- Pour les gestionnaires de fichiers protégés, il est autorisé un seul argument contenant une ligne qui a été lue, incluant l'expression finale `\n`. Si la connexion est fermée ou interrompue, cet argument est `''` et le gestionnaire de fichiers a déjà été fermé et supprimé de l' ensemble de fh à `select()`. Si vous la fermez vous-même, vous devez utiliser `&remsel` pour indiquer à sirc de la supprimer de l'ensemble.

- Pour les gestionnaires de fichiers non protégés, aucun argument n'est autorisé; le point d'insertion est appelé lorsque `select()` indique que la fonction fh est prête pour la lecture, et il est impératif au point d'insertion de lire à partir de lui (en s'assurant de ne pas bloquer le point d'insertion, sysread devrait donc être utilisé et non <>), et éventuellement le fermer et le supprimer avec `&remsel`.

  Pour supprimer un gestionnaire de fichiers de l'ensemble de fh ()`select()ed`, appelez `&remsel($fh);` où `$fh` est le gestionnaire de fichiers.

  Remarquez que sirc n'effectue jamais de contrôle pour vérifier que le gestionnaire de fichiers donné est valide. Avoir un `fh` fermé ou invalide dans le jeu des `select()able`, ou ne pas réellement lire les donéées sur un `sel_* hook` non protégé, obligera sirc à monopoliser l'unité centrale (CPU) en ne bloquant pas `select()`.

  Pour un exemple d'utilisation intensive de tout ceci, voyez le script ftp.pl qui met en application un client ftp à l'intérieur de sirc (vous pourrez le trouver sur la page internet de sirc à l'adresse http://www.eleves.ens.fr:8080/home/espel/sirc/sirc.html).