Zuhause Persönliche Finanzen Tuning in zehn kurze, nützliche Perl-Programme - Dummies

Tuning in zehn kurze, nützliche Perl-Programme - Dummies

Inhaltsverzeichnis:

Video: Microsoft Azure OpenDev—June 2017 2025

Video: Microsoft Azure OpenDev—June 2017 2025
Anonim

Einige Leute glauben, dass kurze Programme nicht sehr gut sind, aber das ist bei Perl nicht so. Nur ein paar Zeilen Perl Code können einen langen Weg gehen. Dieser Artikel listet einige praktische, kleine Perl-Programme auf.

Sammeln von eindeutigen Zeilen

Wenn Ihre Textdatei viele Zeilen enthält, die Duplikate sind und Sie nur die eindeutigen Zeilen sehen möchten, können Sie sie mit folgendem Programm in einem Array (in diesem Fall heißt es @Unique) sammeln.:

öffnen (IN, "einige Datei. Txt"); @ Eindeutig = ();

while () {es sei denn ($ i {$ _} ++) {push (@Unique, $ _)}}

Der Trick dabei ist, dass $ i {$ _} ++ beim ersten Mal 0 zurückgibt Sie erstellen ein Schlüssel / Wert-Paar mit $ _ als Schlüssel und einem Wert ungleich Null danach.

Entfernen mehrerer Leerzeilen

Einige Textdateien weisen mehrere aufeinander folgende Leerzeilen auf, wodurch sie schwer lesbar sind, insbesondere auf kleinen Bildschirmen. Das folgende Programm druckt eine Textdatei und komprimiert alle Instanzen von zwei oder mehr Leerzeilen in eine einzige leere Zeile.

Hinweis: Eine Leerzeile kann Leerzeichen enthalten, z. B. Leerzeichen und Tabulatoren, aber keine anzeigbaren Zeichen.

öffnen (IN, "einige Datei. Txt"); $ PrevBlank = 0;

while () {

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

$ PrevBlank = / ^ s * $ /;

}

Die if-Anweisung im obigen Beispiel ist wahr, wenn sich auf der Zeile nicht leere Zeichen befinden oder wenn die vorherige Zeile nicht leer war. Die $ PrevBlank-Zuweisung gibt an, ob die aktuelle Zeile leer ist, dh sie hat null oder mehr Whitespace-Zeichen und nichts anderes.

Zeilen aus einer Datei in sortierter Reihenfolge drucken

Es ist leicht zu vergessen, wie nützlich die Sortierfunktion von Perl ist. Das folgende Programm liest die gesamte Datei in ein Array, sortiert das Array und gibt das Ergebnis aus. Kurz und bündig und ziemlich effizient zu booten:

open (IN, "somefile. Txt");

print sort ();

Einen Zeilenbereich aus einer Datei drucken

Wollten Sie schon immer nur ein paar Zeilen aus einer Datei lesen und nicht das Ganze? Das folgende Programm druckt nur einen Zeilenbereich. Sie führen das Programm mit zwei Argumenten aus: dem gewünschten Bereich und dem Dateinamen. Zum Beispiel, wenn Sie Ihrem Programm "showline" nennen und Sie die Zeilen 10 bis 20 der somefile sehen möchten. TXT-Datei, verwenden Sie diese Befehlszeile:

showline 10-20 somefile. txt

Das folgende Programm druckt einen Zeilenbereich aus:

offen (IN, $ ARGV [1]) oder "Kann $ File nicht lesen. n ";

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

für ($ i = 1; $ i <= $ stop; $ i + = 1)

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

Nur die Dateien in einem Verzeichnis auflisten

Manchmal möchten Sie vielleicht die Unterverzeichnisse in einem Verzeichnis ignorieren und sich nur auf die Dateien konzentrieren.Sie können den folgenden -f-Dateitest verwenden, um alle Dateien in einem Verzeichnis aufzulisten:

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

Verzeichnis nach Größe auflisten

Um ein Verzeichnis zu sortieren, das nicht mit seinen Dateinamen übereinstimmt, muss Ihr Programm eine Liste von Datensätzen führen, die aus den Namen und anderen Elementen in der Liste besteht. Hashes eignen sich hervorragend für diese Art von Liste, die Datensätze mit einem Schlüssel (dem Dateinamen) und einem Wert (den anderen Verzeichnisinformationen) enthält. Das folgende Programm erstellt einen Hash, der die Größe jeder Datei im Verzeichnis auflistet und dann die Elemente für die Ausgabe sortiert. (Sie können dieses Programm leicht ändern, um es nach Datum statt nach Größe zu sortieren.)

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

foreach $ k (Sortierung {$ i {$ b} <= & gt $ i {$ a}} Schlüssel% i)

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

Sortieren von Verzeichnissen nach der Erweiterung

Das Sortieren nach einem Teil eines Dateinamens ist etwas schwieriger als das Sortieren nach Dateigröße oder nach dem Datum, an dem die Datei geändert wurde. Das folgende Programm zerlegt den Dateinamen in zwei und sortiert den zweiten Teil. Wenn Sie Perl auf einem UNIX- oder Macintosh-System ausführen, funktioniert dieses Programm nur dann voraussehbar, wenn die Dateinamen keine Periode oder eine Periode haben:

foreach $ FullName () {

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

drücken (@Temp, "$ Extt $ FullName");

}

foreach $ Val (sortieren (@Temp)) {

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

"$ FullNamen" drucken;

}

Erstellen eines einfachen Taschenrechners

Benötigen Sie schon immer einen einfach zu bedienenden Taschenrechner, mit dem Sie schnell Mathe abschütteln können? Das folgende Programm verwendet Perls Eval-Funktion, um die Antworten auf jede eingegebene Gleichung auszudrucken. Um das Programm zu beenden, geben Sie eine leere Zeile ein. Hier ist das Programm zum Erstellen eines eigenen Rechners:

while () {

$ i = $ _; chomp ($ i); es sei denn ($ i) {last}

$ o = eval ($ i); "Antwort = $ auf" drucken;

}

Wenn Sie das Programm ausführen, können Sie Folgendes eingeben:

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

und Sie erhalten dieses Ergebnis: > Answer = 6817

Randomisierung einer Liste

In Perl ist das Generieren von Zufallszahlen einfach, aber die Reihenfolge eines Arrays zufällig zu bestimmen ist nicht so einfach. Trotzdem können Sie mit der Splice-Funktion ein zufälliges Element aus einem Array ziehen und das Element dann in ein anderes Array platzieren. Das folgende Programm randomisiert die Liste @MyList:

my @TempList = ();

while (@MyList)

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

@MyList = @TempList;

Der Trick dabei ist, dass rand (@MyList) eine Zahl zwischen 0 und der Anzahl der Elemente in @MyList auswählt und splice diese Zufallszahl in eine ganze Zahl ändert.

Zufällige mnemonische Passwörter generieren

Es ist eine der schwierigsten Aufgaben für einen Systemadministrator, Computerbenutzer davon zu überzeugen, Passwörter zu finden, die nicht leicht erraten werden können. Die Leute scheinen immer darauf zu bestehen, ihre Geburtsdaten oder die Namen von Haustieren als Passwörter zu verwenden - die Verletzung der Sicherheit wird dann zum Kinderspiel.

Das folgende Programm generiert zufällige Passwörter. Anstelle eines Durcheinander von schwer zu merkenden Buchstaben sind die Passwörter jedoch etwas mnemonisch, weil sie in Konsonanten- und Vokalpaaren vorkommen, die aussprechbar sind.Indem Sie einige doof klingende Silben aneinanderreihen, können Sie leicht zu merkende Nonsensphrasen erzeugen.

Jede Silbe des Passworts kann eine von 100 Zahlen darstellen; daher ist ein einziges Viersilbenpasswort, wie

votahubo, , eine von 100 Millionen (100 bis zur vierten Potenz) möglichen Passwörtern, die das Programm erzeugt. Die Zuweisung dieser Passwörter durch einen Systemadministrator bietet mehr Sicherheit, als dass Benutzer ihre eigenen, leicht erratenen Passwörter auswählen können: print "Geben Sie eine Startnummer ein:"; $ s =;

srand ($ s ^ Zeit);

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

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

für ($ i = 1; $ i <= 4; $ i + = 1)

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

Die ersten beiden Zeilen dieses Programms initialisieren den Startwert für die Zufallszahlen und die nächsten beiden Zeilen erzeugen Listen mit den 20 Konsonanten (minus

q ) und 5 Vokalen des Alphabets. Die for-Schleife druckt einfach die vier Silben.

Tuning in zehn kurze, nützliche Perl-Programme - Dummies

Die Wahl des Herausgebers

Web Marketing: Warum Suchmaschinen existieren - Dummies

Web Marketing: Warum Suchmaschinen existieren - Dummies

Wenn Sie verstehen, warum Suchmaschinen existieren, können sie für Sie in Ihrem Web-Marketing-Geschäft arbeiten. Also, hier ist eine kurze Lektion, warum Suchmaschinen existieren und wie Sie sie nutzen können, um Geld zu verdienen. Suchmaschinen liefern Relevanz. Relevanz bedeutet, dass Besucher auf Suchergebnisse klicken und zufrieden sind mit ...

Was sind Tür- und Informationsseiten? - dummies

Was sind Tür- und Informationsseiten? - dummies

Eine Doorway-Seite wird nur als Zugang von einer Suchmaschine zu Ihrer Website erstellt. Doorway-Seiten werden manchmal als Gateway-Seiten und Geisterseiten bezeichnet. Die Idee besteht darin, hoch optimierte Seiten zu erstellen, die von Suchmaschinen aufgenommen und indiziert werden und die mit etwas Glück gut ranken und somit den Traffic auf eine ...

Was ist eine Weiterleitung bei der Suchmaschinenoptimierung? - Dummies

Was ist eine Weiterleitung bei der Suchmaschinenoptimierung? - Dummies

Eine Weiterleitung ist das automatische Laden einer Seite ohne Benutzereingriff. Sie klicken auf einen Link, um eine Webseite in Ihren Browser zu laden, und innerhalb von Sekunden verschwindet die geladene Seite, und eine neue wird angezeigt. Designer erstellen häufig Seiten für Suchmaschinen - optimierte, schlüsselwortreiche Seiten -, die Besucher auf die ...

Die Wahl des Herausgebers

Behandeln Probleme mit dem Kundenservice über Social Media - Dummies

Behandeln Probleme mit dem Kundenservice über Social Media - Dummies

, Wenn Kunden wissen, dass sie direkt mit ein Geschäft in den sozialen Medien, können sie aus einer beliebigen Anzahl von Gründen mit ihnen in Verbindung treten. Aber sobald sie merken, dass ein Problem mit dem Kundenservice oder einer Produktfrage über einen einzigen Tweet oder Beitrag angesprochen werden kann, ist es wahrscheinlicher, dass sie mit dem Unternehmen Geschäfte machen.

Acht Möglichkeiten, Social Media Feedback zu erhalten - Dummies

Acht Möglichkeiten, Social Media Feedback zu erhalten - Dummies

Die heutige Technologie verändert die Art und Weise, wie wir Geschäfte machen blitzschnell. Auch der Social-Media-Handel bewegt sich blitzschnell, aber durch die Beobachtung von Erwähnungen und Fragen an die Community können Sie einen Eindruck davon bekommen, wie Ihr Markt über bevorstehende Veränderungen denkt. Auch andere Posts können Ihnen helfen, kritisches Feedback aus der Öffentlichkeit zusammenzustellen ...

Manage Social Media Commerce mit HootSuite - dummies

Manage Social Media Commerce mit HootSuite - dummies

HootSuite ist ein Social Media Management System zur Umsetzung von Outreach und Überwachung in sozialen Netzwerken über ein einziges webbasiertes Dashboard. Für Unternehmen wird HootSuite am häufigsten von Social-Media-Teams mit mehreren Agenten verwendet, aber auch viele Einzelanwender mögen es. Wenn Sie auf der Suche nach einer robusten Plattform sind, die alles an einem Ort hält, ...

Die Wahl des Herausgebers

Die 5 Kornsterne der Mittelmeer - Dummies

Die 5 Kornsterne der Mittelmeer - Dummies

Die Mittelmeerdiät ist in der Praxis des Habens begründet ein Vollkorn zu jeder Mahlzeit. Und nein, das bedeutet nicht, eine ganze Platte Vollkornspaghetti mit Fleischsauce zum Abendessen zu essen. Stattdessen machen die Menschen im Mittelmeerraum ihr Getreide zur Beilage oder schaffen durch die Zugabe von magerem Eiweiß mehr Gleichgewicht ...

Strebe nach Gesundheit mit 7 bis 10 Portionen Obst und Gemüse - Schnuller

Strebe nach Gesundheit mit 7 bis 10 Portionen Obst und Gemüse - Schnuller

Der Verzehr von sieben bis zehn Portionen Obst und Gemüse pro Tag, wie sie für die mediterrane Ernährung empfohlen werden, mag sehr viel erscheinen, aber es muss keine so große Herausforderung sein. Wenn Sie nicht die Früchte und das Gemüse lieben, die spezifisch mit der Mittelmeerdiät verbunden sind, ist das okay! Essen Sie jede Art von Obst oder Gemüse, die Sie ...

Die gesundheitlichen Vorteile von mediterranen Kräutern und Gewürzen - Dummies

Die gesundheitlichen Vorteile von mediterranen Kräutern und Gewürzen - Dummies

Sie haben vielleicht gedacht, dass der Oregano und Basilikum in Ihrer Spaghetti-Sauce lieferte nur einen deutlichen italienischen oder mediterranen Geschmack, aber diese kleinen Kräuter sind Pflanzen, was bedeutet, dass sie alle Arten von gesundheitlichen Vorteilen haben, die einen großen Einfluss auf Ihre allgemeine Gesundheit haben können. Einfache Gewürze wie Ingwer und Oregano enthalten Phytochemikalien, ...