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

Sources de données et outils de Business Intelligence pour Data Warehouse Deluxe - nuls

Sources de données et outils de Business Intelligence pour Data Warehouse Deluxe - nuls

Vous ne serez pas chanceux assez pour trouver des environnements à source unique lorsque vous construisez un entrepôt de données de luxe. Maintenant, vous avez un tout nouvel ensemble de problèmes que vous devez traiter, y compris ceux de cette liste: Différents codages pour des informations similaires: Différents ensembles de numéros de client proviennent de différentes sources, par exemple. L'intégrité des données ...

Entreposage de données: Définition de travail - nuls

Entreposage de données: Définition de travail - nuls

, Qu'est-ce qu'un entrepôt de données? Dans un sens littéral, il est correctement décrit à travers les définitions spécifiques des deux mots qui composent le terme: Données: Faits et informations sur quelque chose Entrepôt: Un lieu ou une installation pour stocker des biens et des marchandises Stockage de données d'aujourd'hui défini Entreposage des données est coordonné , architecturé et copie périodique ...

Data Warehousing et Business Trends - nuls

Data Warehousing et Business Trends - nuls

Maintenant que l'ère de l'entreposage de données est arrivée, la nouvelle génération de business et de management les tendances (vous feriez mieux de croire qu'une prochaine génération viendra) pourraient avoir un peu plus de substance - un peu plus d'information - que vous pouvez utiliser pour déterminer si une tendance est un pas dans la bonne direction ...

Le choix des éditeurs

En utilisant les menus guidés

En utilisant les menus guidés

Les menus guidés de votre Nikon D3400 fonctionnent comme les menus interactifs que vous rencontrez dans d'autres domaines de votre vie - sur les téléphones portables, les guichets automatiques, etc. - sauf qu'au lieu d'appuyer sur les boutons de l'écran, vous utilisez le sélecteur multidirectionnel et le bouton OK pour faire vos choix de menu. Et heureusement, votre appareil photo ...

En utilisant le moniteur au lieu du viseur sur votre Nikon D3100 - des mannequins

En utilisant le moniteur au lieu du viseur sur votre Nikon D3100 - des mannequins

Comme beaucoup de nouveaux reflex numériques caméras, le Nikon D3100 offre Live View, qui utilise le moniteur comme viseur lors de la prise de photos. Activer Live View est également la première partie du processus de prise de vue vidéo; en fait, vous devez utiliser le moniteur au lieu du viseur lorsque vous filmez des films. Utilisation de la vue en direct ...

En mode Live View et en mode vidéo Autofocus avec un Nikon D7000 - mannequins

En mode Live View et en mode vidéo Autofocus avec un Nikon D7000 - mannequins

Comme pour la photographie avec viseur , vous pouvez opter pour la mise au point automatique pendant la prise de vue Live View sur votre Nikon D7000, en supposant que votre objectif le supporte. Si vous utilisez l'objectif du kit (ou un similaire), réglez l'interrupteur de l'objectif sur la position A. Les étapes suivantes expliquent le choix des réglages de l'autofocus, puis ...

Le choix des éditeurs

Fantasy Conseils de football pour les débutants - les nuls

Fantasy Conseils de football pour les débutants - les nuls

Après avoir construit votre équipe de football fantastique, votre travail vraiment commence. Entraîner votre équipe signifie compiler une liste complète chaque semaine et décider quels joueurs choisir et lesquels lancer et / ou échanger. Vos décisions d'entraînement hebdomadaires vont faire ou défaire votre saison fantastique, alors prenez des décisions ...

Fantasy Football termes que vous devez savoir - dummies

Fantasy Football termes que vous devez savoir - dummies

Comme le reste du monde du sport, le football fantastique a un Lingo tout seul. Les termes d'argot sont tous assez faciles à saisir et amusants à utiliser, alors ne soyez pas effrayés! La liste suivante vous aidera à avoir une bonne idée de ces termes de football fantasy avant de commencer à jouer. Crédit: © iStock / art12321 ...

Fantasy Bases de la recherche sur le football - mannequins

Fantasy Bases de la recherche sur le football - mannequins

Alors que vous vous préparez pour un projet de football fantastique, vous devriez compter sur plusieurs ressources et de l'aide, y compris des émissions de télévision, des magazines et des sites Web. Gardez à l'esprit qu'un entraîneur bien préparé à la journée de draft est un entraîneur gagnant à la fin de la saison!