|
Publicité ' | ||||||||||||||||||||||||
|
|
#41 |
![]() ![]() ![]() Inscription : avril 2004 Messages : 13 520 ![]() |
grillé par philou
__________________
|
|
|
00
|
|
|
#42 |
|
Membre chevronné
![]() ![]() |
Merci pour l'explication convaincante.
|
|
|
00
|
|
|
#43 |
![]() ![]() ![]() Inscription : avril 2004 Messages : 13 520 ![]() |
La FAQ Perl va subir quelques corrections (grammaire, orthographe, formulation de phrases, codes...). N'hésitez pas à nous en faire part de bogues à corriger. De plus, si vous souhaitez ou avez des idées de nouvelles questions dans la FAQ, dites le nous.
Merci d'avance !!
__________________
|
|
|
00
|
|
|
#44 |
![]() ![]() ![]() Inscription : avril 2004 Messages : 13 520 ![]() |
Bonjour,
La FAQ a subi comme annoncé une mise à jour complète. Merci de donner vos avis et remarques. Merci !
__________________
|
|
|
00
|
|
|
#45 |
![]() ![]() ![]() Inscription : avril 2004 Messages : 13 520 ![]() |
Je cherche des volontaires pour mettre à nouveau à jour la FAQ Perl.
En effet, cela m'a pris quelques jours pour mettre la FAQ à jour, mais je souhaiterais que l'on puisse à nouveau la mettre à jour pour y rajouter dans certaines sections, les nouveautés issues de Perl 5.10, 5.12 et 5.14. Comme vous avez dû le lire ici, ActiveState ne propose plus que les versions 5.12 et 5.14. il serait donc intéressant que notre FAQ soit à jour dans les possibilités que nous offrent ces nouvelles versions. N'hésitez donc pas à vous proposer ou même faire pas de vos participations dans ce fil et je les rajouterais dans la FAQ. Merci
__________________
|
|
|
00
|
|
|
#46 |
![]() ![]() ![]() Inscription : avril 2004 Messages : 13 520 ![]() |
Quelques mises à jour et nouvelles questions ont été rajoutées dans la FAQ Perl en rapport avec Perl 5.10, 5.12. Vous trouverez des nouveaux opérateurs tels yada-yada, each pour les listes et quelques pragmas.
Si vous avez des rajouts, même par rapport à perl 5.14, n'hésitez pas.
__________________
|
|
|
00
|
|
|
#47 |
|
Expert Confirmé
![]() ![]() Inscription : avril 2009 Messages : 2 633 ![]() |
Pour la rubrique 4.Perl avancé->Operateurs, il faudrait ajouter l'opérateur "smart matching" (~~, chercher "Smart" dans perldoc perlsyn).
Merci pour l'opérateur each sur les tableaux et yada-yada
__________________
Plus j'apprends, et plus je mesure mon ignorance (philou67430) Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book) Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé Using strict and warnings is good for you. |
|
|
00
|
|
|
#48 | ||
|
Expert Confirmé
![]() ![]() Inscription : avril 2009 Messages : 2 633 ![]() |
[Q] Comment utiliser * sur la ligne de commande windows ?
[R] L'invité de commande Windows se démarque des shells Unix par le fait que l'expansion des caractères génériques de fichier n'est pas fait pas l'invité de commande (le shell), mais doit être réalisé par le programme qui est appelé par la commande. Or, par défaut, Perl ne réalise pas cette opération, qui n'est pas nécessaire pour les autres shell. Pour remédier à ce manque, il existe une astuce que voici : Code :
Cette astuce est tirée de cet article, au paragraphe Command-line Wildcard Expansion.
__________________
Plus j'apprends, et plus je mesure mon ignorance (philou67430) Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book) Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé Using strict and warnings is good for you. |
||
|
|
20
|
|
|
#49 | |||
![]() ![]() ![]() Inscription : avril 2004 Messages : 13 520 ![]() |
Merci philou, après quelques modifications, voici ce que donnera ta Q/R.
Lieu dans la FAQ : divers Question : Comment utiliser * sur la ligne de commande windows ? Réponse : Citation:
__________________
|
|||
|
|
00
|
|
|
#50 |
|
Expert Confirmé
![]() ![]() Inscription : avril 2009 Messages : 2 633 ![]() |
C'est proprement parfait
__________________
Plus j'apprends, et plus je mesure mon ignorance (philou67430) Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book) Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé Using strict and warnings is good for you. |
|
|
00
|
|
|
#51 |
![]() ![]() ![]() Inscription : avril 2004 Messages : 13 520 ![]() |
FAQ mise à jours !
__________________
|
|
|
00
|
|
|
#52 | ||
|
Nouveau Membre du Club
![]() ![]() Développeur Web Inscription : août 2011 Messages : 12 ![]() |
Hello,
Voici un script permettant de lister des fichiers textes dans un répertoire. De comparer leur dernière date de modification. Si les dates sont vieilles au minimum d'un mois, les fichiers sont supprimés. Code :
|
||
|
|
00
|
|
|
#53 |
![]() ![]() ![]() Inscription : avril 2004 Messages : 13 520 ![]() |
Merci, je vais le mettre en ligne.
__________________
|
|
|
00
|
|
|
#54 |
![]() ![]() ![]() Inscription : avril 2004 Messages : 13 520 ![]() |
Mise à jour de la FAQ effectuée.
__________________
|
|
|
00
|
|
|
#55 |
![]() ![]() ![]() Inscription : avril 2004 Messages : 13 520 ![]() |
Nouvelle question dans la FAQ : Comment supprimer les fichiers vieux de plus de X jours dans des répertoires ?
__________________
|
|
|
00
|
|
|
#56 |
![]() ![]() ![]() Inscription : avril 2004 Messages : 13 520 ![]() |
Nouvelle question dans la FAQ : Comment lire ou créer un fichier raccourci (.lnk) en Perl ?
__________________
|
|
|
00
|
|
|
#57 | ||||||||||
|
Membre confirmé
![]() Michel DUFOURAdministrateur Unix / Oracle retraité Inscription : septembre 2011 Messages : 209 ![]() |
Bonjour,
[Q1] Comment récupérer en perl la valeur d'une clé dans le registre windows ? [R] En utilisant le module Win32::TieRegistry Je n'ai rien inventé, tout est là : http://search.cpan.org/~adamk/Win32-...TieRegistry.pm http://www.bribes.org/perl/docfr/win32tieregistry.html A partir d'un exemple nous allons récupérer la position du fichier icône associé à un type de fichier ainsi que la comande pour lancer une application. Ces deux informations sont contenues dans le registre (regedit) de Windows et sont connues sous les noms de : - DefaultIcon pour l'icône - command pour la ligne de commande Dans le registre, les données sont organisées dans des HKEY. HKEY signifiant "handle key" soit "poignée de clés" les données sont stockées dans des "ruches" qui sont des blocs, éventuellement chaînés, de 4096 caractères. Ces HKEY sont au nombre de cinq, leurs noms sont explicites : HKEY_CLASSES_ROOT HKEY_CURRENT_USER HKEY_LOCAL_MACHINE HKEY_USERS HKEY_CURRENT_CONFIG Les informations que nous recherchons sont dans HKEY_CLASSES_ROOT Toutes autres informations peuvent être trouvées avec le module perl Win32::TieRegistry Il suffit de connaître le chemin de l'information pour y accéder, c'est ce qui est bien souvent le moins évident ! Il est également possible de modifier, mettre à jour... le registre. Faut-il préciser combien une sauvegarde du registre peut éviter d'avoir à tout réinstaller ? Avant de nous perdre dans la forêt, à l'aide d'un exemple, voyons comment Windows gère les associations des fichiers icônes, avec les extensions des fichiers .mcl .exe RealPlayer.exe batfile ...etc. : - Une application de gestion de messagerie écrite en perl se trouve dans C:\Mail - Cette application peut produire deux types de fichiers : -- des fichiers de notification qui auront l'extension .mail -- des fichiers d'anomalie qui auront l'extension .ano Nous prenons, sur le net ou ailleurs, deux icônes, un qui symbolise une enveloppe qui à pour nom enveloppe.ico, l'autre qui symbolise un avertissement, exclamation.ico que nous sauvegardons respectivement en Mail.ico et Warn.ico dans le répertoire C:Mail : C:\Mail\Mail.ico (enveloppe.ico) C:\Mail\Warn.ico (exclamation.ico) Pour les fichier de notification : 1) Dans regedit à [HKEY_CLASSES_ROOT] ajoutons une clé: .mail et dans 'valeur chaine' de cette clé: "MAIL.mail" 2) toujours dans [HKEY_CLASSES_ROOT] ajoutons une autre clé: MAIL.mail (nb c'est la 'valeur' mise dans .mail) ici la valeur doit rester à "valeur non définie" ou bien mettre un libellé perso. 3) A l'intérieur de MAIL.mail, créons une clé: DefaultIcon attention la casse à de l'importance, et pour cette clé, la valeur est le path du fichier icône C:\Mail\Mail.ico Pour les fichier d'anomalie : 1) Dans regedit à [HKEY_CLASSES_ROOT] ajoutons une clé: .ano et dans 'valeur chaine' de cette clé: "ANO.ano" 2) toujours dans [HKEY_CLASSES_ROOT] ajoutons une autre clé: ANO.ano (nb c'est la 'valeur' mise dans .ano) ici la valeur doit rester à "valeur non définie" ou bien mettre un libellé perso. 3) A l'intérieur de ANO.ano, créons une clé: DefaultIcon attention la casse à de l'importance, et pour cette clé, la valeur est le path du fichier icône C:\Mail\Warn.ico A ces endroits le registre ressemble à : Code :
A partir de cet instant tous les fichiers d'extension .mail auront pour icône Mail.ico , les .ano auront pour icône Warn.ico A présent nous sommes campés pour recherchés nos valeurs, ou toutes autres, dans le registre, en utilisant le module Win32::TieRegistry (sauf erreur présent dans le core, à télécharger éventuellement). Premier petit programme qui affiche les clés d'un niveau : Code :
NB avec : Code :
my $Key = $RegHash{"HKEY_CLASSES_ROOT"}; NB : Si le programme ne revoie rien 2 cas : - soit la clé HKEY_CLASSES_ROOT\\mailto n'exsiste pas - soit il y a un problème au niveau des droits d'exécution Dans le deuxième cas, trois façons de régler l'anomalie : - 1 - Aller dans Panneau de configuration => paramètres du contrôle de compte d’utilisateur Choisir "Ne jamais m'avertir" (pas recommandé !) - 2 - Lancer l'ouverture d'une console DOS depuis le menu "Démarrer" avec "Exécuter en tant qu'administrateur", (un utilisateur non administrateur devra fournir le mot de passe), puis y lancer perl pgm.pl - 3 - Créer un raccourci de la console DOS sur le bureau, avec pour paramètres : --> Cible ==================> C:\Perl\bin\perl.exe C:\DevPerl\Registre/pgm.pl --> Démarrer dans ==========> C:\DevPerl\Registre --> Onglet Compatibilité ----> Niveau de privilège ==> Cocher "Exécuter ce programme en tant qu'administrateur" Dans ce dernier cas, suivant le niveau d'avertissement choisi, il faudra éventuellement confirmer la demande de Windows. ATTENTION à la sécurité, une personne malveillante peut modifier la source.pl et causer beaucoup de dégâts ! ========================================================================================= Les problèmes de droits d'accès réglés, voyons à présent comment accéder différemment au registre : # Dans l'exemple qui suit : # - on précise un délimiteur différent, Delimiter => '/' , qui évite de gérer les \\ # - Au lieu d'affecter un point d'entrée intermédiaire à un hash, on utilse la fonction ->open sur la HKEY à un # niveau précisé : $Dossier->Open('mailto', { 'Delimiter' => '/' }); toujours en précisant le délimiteur '/' Code :
# On met le tout dans une fonction win32_reg_read qui prend en paramètre une sous-clé ainsi qu'une valeur de clé. # Si celle-ci contient un dossier, on desecend d'un niveau, si elle = "" on affiche la valeur de la clé. # Au passage on contrôle notre DefaultIcon de l'appli Mail, ainsi que la commande pour lancer le gestionnaire de # # # messagerie avec son DefaultIcon. Code :
Code :
Je me suis évidemment largement inspiré de bouts de code trouvés sur Internet, dont je n'ai pas noté toutes les URL. Les seuls problèmes que j'ai rencontré, sont au niveau des droits d'accès au registre. Pour finir, il existe plusieurs façons de désigner une icône associée à des fichiers exécutables ou non : 1 - Celle que nous avons utilisé pour l'appli Mail en créant nous même les clés dans le registre DefaultIcon = C:\Mail\Mail.ico 2 - Lorsque DefaultIcon à pour valeur un .dll suivi d'un nombre, dans ce cas l'icône est dans la .dll désigné, comme dans : DefaultIcon = %SystemRoot%\System32\imageres.dll,-68 C'est le cas le plus fréquent ! Dans ce cas, il faut extraire l'icône de la dll. Je n'ai pas encore fait d'extraction, ce doit être possible en utilisant les informations suivantes : http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx http://search.cpan.org/~bulkdd/Win32-API-0.75/API.pm plus quelques info pour accéder à l'API : http://www.developpez.net/forums/d99...e/#post5572583 3 - Lorsque DefaultIcon à pour valeur un .exe ,éventuellement suivi d'un chiffre, dans ce cas il s'agit de l'icône associé à l'exécutable, le chiffre désigne le numéro s'il y en a plusieurs d'associés, comme dans : DefaultIcon = C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe,0 4 - DefaultIcon désigne un fichier dont le chemin est en partie en hexadécimal, comme pour Perl : C:\Windows\Installer\{4552F143-9C76-44A0-8F68-B6E022668375}\_95fe01f856ebc8574541b8763179eadc,0 Je ne sais pas ce que représente le fichier de plus de 300Mo _95fe01f856ebc8574541b8763179eadc Il peut y avoir d'autres méthodes d'association !!! Le souci avec le registre c'est de savoir ce qu'on cherche, et une fois qu'on la trouvé, savoir comment l'interprêter ! @djibril : Mes sources méritent certainement l'intervention d'un pro perl. C'est le premier jet de ma première participation, s'il manque des précisions, si la présentation est à revoir... n'hésite pas à me renvoyer le tout avec tes commentaires, je corrigerai. MERCI à toutes et à tous. [Edit 12:53] J'avais oublié le nom de clé [DefaultIcon] |
||||||||||
|
|
00
|
|
|
#58 |
![]() ![]() ![]() Inscription : avril 2004 Messages : 13 520 ![]() |
Nouvelle question : Comment lister les répertoires de façon récursive ou non ?
__________________
|
|
|
00
|
|
|
#59 |
![]() ![]() ![]() Inscription : avril 2004 Messages : 13 520 ![]() |
@dmganges Je vais me pencher sur ta proposition.
__________________
|
|
|
00
|
|
|
#60 | ||
|
Membre confirmé
![]() Michel DUFOURAdministrateur Unix / Oracle retraité Inscription : septembre 2011 Messages : 209 ![]() |
Bonjour djibril,
Comme promis mais avec du retard... voici quelques modules qui me sont utiles... Je n'ai pas trouvé le moyen de les joindre en MP. Bien cordialement, MD [EDIT Oubli de LISEZMOI.txt] [EDIT oubli de Reg_Ano_Mail.reg] Décidément ! Pour modifier le registre afin de prendre en compte les icônes Warn.ico et Mail.ico et avoir une visualisation de Mail et d'Ano sur le bureau. Il faut au minimum fermer la session et la rouvrir pour la prise en compte. Il semble que le forum n'accepte pas les .reg en pièces jointes, je colle le contenu ici : Code :
|
||
|
|
00
|
Copyright © 2000-2013 - www.developpez.com