Accueil Finances personnelles Syntonisation de dix programmes Perl courts et utiles - mannequins

Syntonisation de dix programmes Perl courts et utiles - mannequins

Table des matières:

Vidéo: You Bet Your Life: Secret Word - Floor / Door / Table 2025

Vidéo: You Bet Your Life: Secret Word - Floor / Door / Table 2025
Anonim

Certaines personnes pensent que les programmes courts ne sont pas bons pour beaucoup, mais ce n'est pas le cas de Perl. Juste quelques lignes de code Perl peuvent aller un long chemin. Cet article répertorie des programmes Perl très pratiques.

Collecte de lignes uniques

Si votre fichier texte contient plusieurs lignes qui sont en double et que vous ne voulez voir que les lignes uniques, vous pouvez les collecter dans un tableau (dans ce cas, @Unique) avec le programme suivant:

ouvrir (IN, "quelquechose.txt"); @ Unique = ();

while () {sauf ($ i {$ _} ++) {push (@Unique, $ _)}}

L'astuce ici est que $ i {$ _} ++ retourne 0 la première fois vous créez une paire clé-valeur avec $ _ comme clé, et une valeur non nulle après cela.

Suppression de plusieurs lignes vides

Certains fichiers texte comportent plusieurs lignes vides consécutives, ce qui les rend difficiles à lire, en particulier sur les petits écrans. Le programme suivant imprime un fichier texte en compressant toutes les instances de deux ou plusieurs lignes vides dans une seule ligne vide.

Remarque: Une ligne vide peut comporter des caractères blancs, tels que des espaces et des tabulations, mais aucun caractère affichable.

ouvrir (IN, "un fichier.txt"); $ PrevBlank = 0;

while () {

if (/ S / ou! $ PrevBlank) {print $ _}

$ PrevBlank = / ^ s * $ /;

}

L'instruction if de l'exemple précédent est vraie s'il y a des caractères non vides sur la ligne ou si la ligne précédente n'était pas vide. L'affectation $ PrevBlank vous indique si la ligne en cours est vide, ce qui signifie qu'elle a zéro ou plusieurs caractères espaces et rien d'autre.

Imprimer des lignes à partir d'un fichier dans l'ordre du tri

Il est facile d'oublier l'utilité de la fonction de tri de Perl. Le programme suivant lit le fichier entier dans un tableau, trie le tableau et imprime le résultat. Court et doux, et assez efficace pour démarrer:

ouvrir (IN, "somefile.txt");

print sort ();

Imprimer une série de lignes à partir d'un fichier

Avez-vous déjà voulu lire seulement quelques lignes d'un fichier, et pas tout? Le programme suivant imprime uniquement une série de lignes. Vous exécutez le programme avec deux arguments: la plage que vous voulez et le nom de fichier. Par exemple, si vous nommez votre programme "showline" et que vous voulez voir les lignes 10 à 20 du fichier. fichier txt, vous utilisez cette ligne de commande:

showline 10-20 unfichier. txt

Le programme suivant imprime une série de lignes:

ouvrir (IN, $ ARGV [1]) ou mourir "Impossible de lire le fichier $. n ";

($ Start, $ Stop) = split (/ - /, $ ARGV [0]);

pour ($ i = 1; $ i <= $ stop; $ i + = 1)

{$ Ligne =; if ($ i> = $ Start) {print $ Line}}

Liste seulement les fichiers dans un répertoire

Parfois, vous pouvez ignorer les sous-répertoires dans un répertoire et vous concentrer sur les fichiers.Vous pouvez utiliser le test de fichier -f suivant pour lister tous les fichiers d'un répertoire:

foreach $ f () {if (-f $ f) {print "$ fn"}}

Liste d'un répertoire par taille

Pour trier une liste de répertoires par autre chose que ses noms de fichiers, votre programme doit conserver une liste d'enregistrements comprenant les noms et autres éléments de la liste. Les hachages sont excellents à utiliser pour ce genre de liste qui a des enregistrements avec une clé (le nom de fichier) et une valeur (les autres informations de répertoire). Le programme suivant crée un hachage qui répertorie la taille de chaque fichier dans le répertoire, puis trie les éléments pour la sortie. (Vous pouvez facilement modifier ce programme pour trier par date plutôt que par taille.)

foreach $ f () {$ i {$ f} = -s $ f};

foreach $ k (trier {$ i {$ b} <= & gt $ i {$ a}} clés% i)

{printf "% 8d% sn", $ i {$ k}, $ k }

Tri des répertoires par extension

Le tri par une partie d'un nom de fichier est un processus légèrement plus difficile que le tri par taille de fichier ou par la date à laquelle le fichier a été modifié. Le programme suivant divise le nom de fichier en deux et trie par la seconde partie. Si vous exécutez Perl sur un système UNIX ou Macintosh, ce programme fonctionne de manière prévisible uniquement si les noms de fichiers n'ont pas de période ou de période:

foreach $ FullName () {

($ Name, $ Ext) = split (/. /, $ FullName, 2);

push (@Temp, "$ Extt $ FullName");

}

foreach $ Val (sort (@Temp)) {

($ Ext, $ FullName) = split (/ t /, $ Val);

imprimez "$ FullNamen";

}

Créer une calculatrice simple

Avez-vous déjà eu besoin d'une calculatrice facile à utiliser pour vous débarrasser d'un calcul rapide? Le programme suivant utilise la fonction eval de Perl pour imprimer les réponses à toute équation que vous entrez. Pour terminer le programme, entrez une ligne vide. Voici ce programme pour créer votre propre calculatrice:

while () {

$ i = $ _; chomp ($ i); sauf si ($ i) {last}

$ o = eval ($ i); print "Réponse = $ sur";

}

Lorsque vous exécutez le programme, vous pouvez entrer quelque chose comme:

((2 ** 8) + (3 ** 8))

et vous obtenez ce résultat: > Réponse = 6817

Randomiser une liste

En Perl, générer des nombres aléatoires est facile, mais randomiser l'ordre d'un tableau n'est pas aussi simple. Néanmoins, vous pouvez utiliser la fonction splice pour extraire un élément aléatoire d'un tableau, puis placer l'élément dans un autre tableau. Le programme suivant randomise la liste @MyList:

my @TempList = ();

while (@MyList)

{push (@TempList, splice (@MyList, rand (@MyList), 1))}

@MonList = @TempList;

L'astuce ici est que rand (@MyList) sélectionne un nombre entre 0 et le nombre d'éléments dans @MyList, et splice change ce nombre aléatoire en entier.

Générer des mots de passe mnémoniques aléatoires

Essayer de convaincre les utilisateurs d'ordinateurs de trouver des mots de passe difficiles à deviner est l'une des tâches les plus difficiles pour un administrateur système. Les gens semblent toujours insister sur l'utilisation de leur date de naissance ou des noms d'animaux de compagnie pour les mots de passe - briser la sécurité devient alors un jeu d'enfant.

Le programme suivant génère des mots de passe aléatoires. Au lieu d'un fouillis de lettres difficiles à retenir, cependant, les mots de passe sont quelque peu mnémoniques parce qu'ils apparaissent dans des paires de consonnes et de voyelles qui sont prononçables.En enchaînant quelques syllabes goofy-sounding, vous pouvez générer des phrases non-sens faciles à mémoriser.

Chaque syllabe du mot de passe peut représenter n'importe lequel des 100 nombres; par conséquent, un seul mot de passe de quatre syllabes, tel que

votahubo, , est l'un des 100 millions de mots de passe possibles (100 à la puissance 4) que le programme génère. Le fait qu'un administrateur système attribue ces mots de passe offre plus de sécurité que de laisser les utilisateurs choisir leurs propres mots de passe, faciles à deviner: print "Entrez un numéro de départ:"; $ s =;

srand ($ s ^ heure);

@ c = split (/ * /, "bcdfghjklmnprstvwxyz");

@ v = split (/ * /, "aeiou");

pour ($ i = 1; $ i <= 4; $ i + = 1)

{print $ c [int (rand (20))], $ v [int (rand (5))] }

Les deux premières lignes de ce programme initialisent la graine pour les nombres aléatoires, et les deux suivantes créent des listes contenant les 20 consonnes (moins

q ) et 5 voyelles de l'alphabet. La boucle for imprime simplement les quatre syllabes.

Syntonisation de dix programmes Perl courts et utiles - mannequins

Le choix des éditeurs

Pour les seniors: Comment travailler avec Windows dans Microsoft Windows - les nuls

Pour les seniors: Comment travailler avec Windows dans Microsoft Windows - les nuls

Windows, avec un W majuscule, tire son nom de sa caractéristique principale: Windows, avec un w minuscule. Se familiariser avec Windows signifie apprendre à ouvrir, fermer, redimensionner, déplacer et basculer entre les fenêtres, ce qui est la clé pour jongler avec succès avec plusieurs activités. Chaque programme que vous exécutez occupe sa propre fenêtre. Une fenêtre peut occuper une partie de ...

Comment accepter ou rejeter les cookies dans Safari - dummies

Comment accepter ou rejeter les cookies dans Safari - dummies

Un cookie est un petit fichier qu'un site Web enregistre automatiquement sur le disque dur de votre Mac. Il contient des informations, telles que vos préférences ou votre date de naissance, que le site utilisera lors de vos prochaines visites. Dans Mac OS X Snow Leopard, Safari vous permet de choisir d'accepter ou non tous les cookies ...

Le choix des éditeurs

Construire des boîtes et des lignes Bézier dans QuarkXPress - des nuls

Construire des boîtes et des lignes Bézier dans QuarkXPress - des nuls

Pour créer une boîte ou une ligne dans QuarkXPress plus complexe qu'un simple rectangle, ovale ou starburst, vous entrez dans le domaine du chemin de Bézier. Si vous avez utilisé l'outil Plume dans Adobe Illustrator ou Photoshop, vous comprenez déjà les chemins de Bézier. Il faut un peu de pratique et un esprit détendu ...

Création d'un rapport avec Crystal Reports 10 - témoins

Création d'un rapport avec Crystal Reports 10 - témoins

Lorsque vous démarrez Crystal Reports 10, généralement l'une des trois choses suivantes: créer un rapport, modifier un rapport ou exécuter un rapport sur les données de votre base de données. Les rapports prennent des données à partir d'une base de données, les traitent, les formatent et les affichent ensuite sur une imprimante, un écran d'ordinateur ou un site Web. Crystal Reports ...

Traitant des commentaires Javadoc dans Eclipse - mannequins

Traitant des commentaires Javadoc dans Eclipse - mannequins

Lorsque vous utilisez Eclipse pour écrire du code Java, n'oubliez pas de éditez les commentaires de Javadoc (les choses qui commencent par / **). Vous pouvez ajouter des informations utiles lorsque vous modifiez les commentaires Javadoc et lorsque vous les modifiez, l'aide au code d'Eclipse propose des suggestions. N'oubliez pas ces astuces lorsque vous modifiez vos commentaires Javadoc: Ajouter un commentaire Javadoc: ...

Le choix des éditeurs

Les connexions cachées sur le Nikon D5600 - les nuls

Les connexions cachées sur le Nikon D5600 - les nuls

Ouvrent les couvercles sur les côtés gauche et droit du Nikon D5600 caméra, et vous verrez plusieurs ports de connexions cachées. Les ports de connexion suivants sont indiqués sur cette image: Terminal d'accessoires: ce terminal accepte les accessoires suivants: câble déclencheur à distance Nikon MC-DC2; Télécommandes sans fil WR-1 et WR-R10; et les unités GPS GP-1 / GP-1A. I ...

Les connexions cachées sur votre Nikon D5200 - les nuls

Les connexions cachées sur votre Nikon D5200 - les nuls

ÉParpillés sur l'extérieur de votre appareil photo sont nombreuses commandes que vous utilisez pour changer d'image -prend des paramètres, revoir et modifier vos photos, et effectuer diverses autres opérations. Caché sous le couvercle sur le côté gauche de la caméra, vous trouverez les quatre ports de connexion suivants, étiquetés dans cette figure: Borne accessoire: Vous pouvez brancher le Nikon en option ...

Des boutons et autres commandes du Nikon D7500 - mannequins

Des boutons et autres commandes du Nikon D7500 - mannequins

C'est génial d'avoir une carte pour le boutons et commandes sur votre appareil photo, mais ce n'est pas beaucoup d'aide si vous ne pouvez pas vous rappeler quel bouton appuyer sur quand (et pourquoi). Alors, voici un aperçu des fonctions des contrôles les plus importants. (Certains contrôles ont des fonctions supplémentaires pendant certaines opérations, mais la table ...