Perl-Tutorial

Was ist Perl?

Perl ist eine hochrangige, universelle, interpretierte, dynamische Programmiersprache. Perl ist ein Begriff, der fรผr โ€žPractical Extraction and Reporting Languageโ€œ steht, obwohl es fรผr Perl kein Akronym gibt. Es wurde 1987 von Larry Wall eingefรผhrt. Die Sprache Perl wurde speziell fรผr die Textbearbeitung entwickelt. Aber jetzt wird sie fรผr eine Vielzahl von Zwecken verwendet, darunter Linux-Systemadministration, Netzwerkprogrammierung, Webentwicklung usw.

รœbersicht รผber Programmiersprachen

Sagen wir es einfach. Wรคhrend Computer nur Nullen und Einsen verstehen (Binรคrsprache/Maschinensprache/[Low-Level-Sprache]), ist es fรผr uns Menschen sehr schwierig, in einer Binรคrsprache zu programmieren. Perl ist eine Programmiersprache, die natรผrliche Sprachelemente verwendet, Wรถrter, die in der allgemeinen englischen Sprache verwendet werden, und daher fรผr Menschen einfacher zu verstehen ist [Hochsprache]. Jetzt gibt es ein Problem; Computer kรถnnen keine Hochsprachen verstehen, die wir Menschen leicht verstehen kรถnnen. Dafรผr brauchen wir etwas, das die Hochsprache in die Niedrigsprache รผbersetzen kann. Hier kommt uns ein Dolmetscher zu Hilfe. Der Interpreter ist eine Software, die das in der Hochsprache geschriebene Programm in eine Niedrigsprache umwandelt, damit der Computer die im Programm geschriebenen Anweisungen verstehen und ausfรผhren kann. Daher ist Perl ein interpretierte Programmiersprache.

Wo wird Perl verwendet?

Die Leistungsfรคhigkeit der Skriptsprache Perl kann in vielen Bereichen eingesetzt werden. Am hรคufigsten wird Perl in der Webentwicklung eingesetzt. Perl wird auch verwendet, um viele Aufgaben auf Webservern und andere Verwaltungsaufgaben zu automatisieren. Es kann automatisch E-Mails generieren und Systeme bereinigen. Perl wird immer noch fรผr seinen ursprรผnglichen Zweck verwendet, d. h. zum Extrahieren von Daten und Generieren von Berichten. Es kann Berichte zur Ressourcennutzung erstellen und auf Sicherheitsprobleme in einem Netzwerk prรผfen. Aus diesem Grund ist Perl auch in der Webentwicklung, im Netzwerkbereich und in der Bioinformatik zu einer beliebten Sprache geworden. Abgesehen davon kann Perl auch fรผr die CGI-Programmierung verwendet werden.

Perl kann auch zur Bilderzeugung und -bearbeitung verwendet werden. Darรผber hinaus sind die Vernetzung รผber Telnet, FTP usw., die Erstellung grafischer Benutzeroberflรคchen, VLSI-Elektronik und die Erstellung von Mailfiltern zur Reduzierung von Spamming-Praktiken einige Anwendungsfรคlle von Perl.

Perl ist auch fรผr die Implementierung von OOP-Praktiken (objektorientierte Programmierung) bekannt und unterstรผtzt alle Formen der Vererbung (einfach, mehrfach und Diamant), Polymorphismus und Kapselung. Perl ist flexibel genug, um sowohl prozedurale als auch OOP-Praktiken gleichzeitig zu unterstรผtzen. Perl verfรผgt auch รผber zusรคtzliche Module, die es Ihnen ermรถglichen, Code zu schreiben oder zu verwenden/wiederzuverwenden, der in Python, PHP, PDL, TCL, Octave, Java, C, C++, Basic, Ruby und Lua in Ihrem Perl-Skript. Das bedeutet, dass Sie Perl mit diesen zusรคtzlichen Programmiersprachen Vielmehr wird der vorhandene Code neu geschrieben.

Anwendungen der Programmiersprache Perl

Anwendungen der Programmiersprache Perl

Warum Perl verwenden?

Es stimmt, dass es andere Programmiersprachen gibt, mit denen man all die oben genannten Dinge erledigen kann. Warum sollten Sie dann speziell Perl verwenden? Perl ist sehr einfach zu erlernen, insbesondere wenn Sie รผber einen Hintergrund in der Computerprogrammierung verfรผgen. Perl wurde so konzipiert, dass es fรผr Menschen leicht zu schreiben und zu verstehen ist und nicht fรผr die Verarbeitung durch Computer. Es verwendet regulรคre Ausdrรผcke. Der natรผrliche Sprachstil unterscheidet sich von anderen Programmiersprachen, die eine bestimmte Grammatik und Syntax verwenden. Daher ist Perl sehr flexibel und schreibt Ihnen keine bestimmte Denkweise fรผr eine Lรถsung oder ein Problem vor. Perl ist รคuรŸerst portabel. Es kann auf jedem Betriebssystem ausgefรผhrt werden, auf dem ein Perl-Interpreter installiert ist, es ist also plattformunabhรคngig. Alle Linux Operating Systems werden mit Perl vorinstalliert, sodass Sie sofort mit der Perl-Programmierung in Linux beginnen kรถnnen. Dies ist anders als bei Shell-Skripten, bei denen sich der Code mit der verwendeten Linux-Distribution รคndert, wodurch er immer weniger portierbar wird. Kleinere spezifische Aufgaben werden in Perl sehr einfach und schnell erledigt. In diesem Perl-Tutorial fรผr Anfรคnger erfahren Sie, wie Sie kleine, schnelle Programme fรผr bestimmte Aufgaben programmieren kรถnnen. Nehmen wir ein einfaches Beispiel des klassischen Hello World-Programms, mit dem man mit dem Erlernen jeder Programmiersprache beginnen kann, deren Wurzeln UNIX sind:

Beispiel: Perl Hallo Welt

Einfaches Beispiel fรผr Perl

#!/usr/bin/perl
print "Hello, world!";

Ausgang:

Hallo Welt!

Die beiden obigen Codezeilen geben Hallo Welt aus! War das nicht zu einfach und schnell? Studenten mit C-Kenntnissen, C++ wissen, dass in diesen Sprachen viel mehr Codezeilen erforderlich sind, um dieselbe Ausgabe zu erhalten.

Sie fragen sich vielleicht warum Perl ist im Web so berรผhmt. Es ist einfach, da die meisten Dinge, die im Web passieren, aus TEXT bestehen und Perl sehr gut in der Textverarbeitung ist. Wenn wir Perl mit einer der Sprachen vergleichen, ist Perl die beste Sprache, die gut in der Dateiverwaltung, Textverarbeitung und Ausgabeberichterstattung ist

Einer der besten Vorteile von Perl ist, dass es so ist frei zu benutzen

Die Perl-Community ist der festen รœberzeugung, dass Software frei verfรผgbar, frei verรคnderbar und frei verteilbar sein sollte. Mehrere Freiwillige aus der Perl-Community bemรผhen sich, die Programmiersprache so gut wie mรถglich zu machen.

Vor- und Nachteile von Perl

Vorteile: Nachteile:

Vorteile von Perl

Nachteile von Perl

  • Im Vergleich zu anderen Programmiersprachen ist Perl am leistungsfรคhigsten fรผr die Textverarbeitung und -analyse
  • Dies ist eine interpretierte Sprache mit schneller Ausfรผhrungszeit, da kein Perl-Skript kompiliert werden muss
  • Einfach und leicht zu programmieren und zu verstehen.
  • Es ist objektorientiert.
  • Die CPAN-Bibliothek erleichtert die Perl-Entwicklung (mehr dazu erfahren Sie spรคter in diesem Thema).
  • Wird in der Webentwicklung hauptsรคchlich fรผr Zahlungsgateways verwendet.
  • Wird in der Automatisierung und zum Testen der meisten netzwerk- und speicherbezogenen Dinge verwendet.
  • Im Vergleich zu anderen Programmiersprachen gibt es nur minimale GUI-Unterstรผtzung.
  • Sie mรผssen auf komplexe Bibliotheksmodule verweisen, die nicht so leicht zu verstehen sind. (Keine Angst, wenn Sie erst einmal wissen, wie es geht, wird alles ganz einfach sein.)
  • Das Verstehen komplexer Muster erfordert Erfahrung.

Lass uns anfangen

Nachdem wir nun genรผgend Wissen รผber die Geschichte von Perl und die grundlegenden Konzepte der Computerprogrammierung haben, die fรผr die Codierung in Perl erforderlich sind, ist es an der Zeit, in die Materie einzutauchen und mit Perl zu beginnen. Im nรคchsten Kapitel erfahren Sie, wie Sie Perl auf Ihrem System einrichten und sich auf die Codierungsreise in Perl vorbereiten kรถnnen. Dieses Perl-Skripting-Tutorial verwendet Linux als Betriebssystem, das die Schรผler fรผr die Codierung in Perl verwenden werden.

Laden Sie Perl herunter und installieren Sie es โ€“ Windows, Mac und Linux

Wie bekomme ich Perl?

Gute Nachrichten Du hast es wahrscheinlich!

Wenn Sie es jedoch noch nicht auf Ihrem System finden, kรถnnen Sie es trotzdem kostenlos herunterladen.

Um herauszufinden, ob Sie Perl bereits installiert haben, rufen Sie die Befehlszeile auf und geben Sie Folgendes ein: perl -v

So laden Sie Perl herunter

Der Befehl zeigt die Version von Perl an, sofern diese installiert ist. In diesem Fall ist die Version v5.14.2. Aber wenn nicht... keine Panik...

UnixPERL-Tutorial fรผr Anfรคnger โ€“ Komplette Anleitung Bereits installiert Im Lieferumfang ist Perl vorinstalliert. Mรถglicherweise mรผssen Sie jedoch auf die neueste Version aktualisieren.
Mac OS PERL-Tutorial fรผr Anfรคnger โ€“ Komplette Anleitung Bereits installiert Auf OSX ist Perl vorinstalliert. Mรถglicherweise mรผssen Sie es jedoch auf die neueste Version aktualisieren
WindowsPERL-Tutorial fรผr Anfรคnger โ€“ Komplette Anleitung Muss installiert werden Es stehen zwei Optionen zur Verfรผgung

  1. Strawberry Perl ist eine Open-Source-Binรคrdistribution von Perl fรผr die Windows Betriebssystem. Es enthรคlt einen Compiler und vorinstallierte Module, die die Mรถglichkeit bieten, XS-CPAN-Module direkt aus CPAN zu installieren
  2. ActiveState Perl bietet eine binรคre Distribution von Perl (fรผr viele Plattformen) sowie einen eigenen Perl-Paketmanager (PPM).

Aktualisieren von Perl unter Linux:

Wenn Sie die Perl-Version aktualisieren mรผssen, geben Sie einfach eine einzige Befehlszeile ein

sudo apt-get install perl

und entspannen. Fรผr den Rest wird gesorgt. Stellen Sie einfach sicher, dass Sie รผber eine aktive Internetverbindung verfรผgen.

Aktualisieren Sie PERL unter Linux

Aktualisieren Sie PERL unter Linux

Installieren Sie Perl fรผr Windows:

Laden Sie zunรคchst das Active Perl herunter Link. Befolgen Sie diese Schritte, um ActivePerl darauf zu installieren Windows System. Sehen Sie sich dazu die folgenden Screenshots an.

Schritt 1: Sobald Sie das Installationsprogramm heruntergeladen und die Installation gestartet haben, wird das folgende Fenster angezeigt. Klicken Sie auf โ€žWeiterโ€œ, um fortzufahren.

So installieren Sie Perl auf Windows

Schritt 2: Akzeptieren Sie die Lizenzvereinbarung, um mit der Installation fortzufahren.

So installieren Sie Perl auf Windows

Schritt 3: Nachfolgend finden Sie verschiedene Pakete, die installiert werden. StandardmรครŸig werden alle ausgewรคhlt. Der einzige Unterschied ist PPM (Perl Package Manager). Dies ist das von Active Perl bereitgestellte Dienstprogramm zum Installieren externer Perl-Module oder -Bibliotheken in Ihrem System. Klicken Sie auf Weiter, um fortzufahren.

Perl installieren auf Windows

Schritt 4: Dabei handelt es sich um verschiedene Arten von Perl-Erweiterungen, die fรผr Perl verwendet werden kรถnnen. Meistens werden wir .Pl, .Plx und .Pm fรผr Perl verwenden. Perl-Module verwenden grundsรคtzlich .Pm als Dateierweiterung, um auf eine Bibliotheksdatei zu verweisen. Wรคhlen Sie alle Optionen aus und klicken Sie auf die Schaltflรคche Weiter.

Perl installieren auf Windows

Schritt 5: Klicken Sie auf die Schaltflรคche โ€žInstallierenโ€œ, um mit der Installation fortzufahren.

Perl installieren auf Windows

Schritt 6: Fรผhren Sie nach der Installation den Befehl โ€žPerl โ€“vโ€œ aus, um zu รผberprรผfen, ob Perl erfolgreich auf Ihrem System installiert wurde.

PERL-Installation an Windows

Es gibt viele Dinge, die fรผr die Einrichtung der Perl-Umgebung sowohl unter Linux als auch unter Linux besprochen werden mรผssen Windows, da in dieser Installation nicht viele Bibliotheksdateien enthalten sein werden. Sie mรผssen diese manuell installieren. Sie kรถnnen diese manuell mit CPAN (Comprehensive Perl) installieren Archive Network) oder PPM, das nur fรผr Perl-Fenster funktioniert. Diese Dateien sind jedoch nicht zwingend erforderlich, um mit dem Codieren in Perl zu beginnen.

Abgesehen von diesem Windows-Setup kรถnnten Sie verwenden Windows 10's neue Funktion des Linux-Subsystems รผber Windows und verwenden Sie es zum Ausfรผhren von Perl-Code

Erstes Perl-Programm

Hello world!

Perl-Beispiel: Hallo Welt

#!/usr/bin/perl -w
#this is just a commentโ€ฆ
print "Hello World";

Machen Sie sich keine Sorgen, wenn Sie diesen Text nicht verstehen. Bald wird alles klar sein. Kommen Sie und schauen Sie es sich zeilenweise an:

#!/usr/bin/perl		

Dies sagt das OperaSystem dazu auffordern, diese Datei mit dem Programm auszufรผhren, das sich unter /usr/bin/perl befindet. Einige IDEs benรถtigen diese Zeile nicht. Wenn es unbedingt erforderlich ist, mรผssen Sie hier einen Pfad zu Ihrem Dolmetscher angeben. Erinnern! Diese spezielle Zeile muss am Anfang Ihres Programms stehen und mit # beginnen! Warnungen verwenden; Dies ist ein weiterer spezieller Befehl, der den Interpreter anweist, alle Warnungen anzuzeigen, z. B. -w, wodurch Warnungen global aktiviert werden.

print "Hello World";		

Die Druckanweisung schreibt Text auf den Bildschirm. Das Semikolon am Ende der Zeile teilt dem Perl-Interpreter mit, dass die Anweisung abgeschlossen ist. Sie mรผssen am Ende jeder Anweisung im Perl-Code ein Semikolon einfรผgen. Beachten Sie das Anfรผhrungszeichen(โ€œ). Es ist fรผr die Druckanweisung erforderlich. Speichern Sie das obige Skript als firstprog.pl

On Windows

Wenn Sie Strawberry installiert haben, kรถnnen Sie einfach auf Ausfรผhren klicken. Sie kรถnnen auch die Befehlszeilenschnittstelle ausfรผhren und in die Konsole schreiben:

C:\> perl path\firstprog.pl		

oder, wenn sich perl.exe nicht in Ihrem Pfad befindet:

C:\> c:\perl\bin\perl.exe firstprog.pl		

Unter Linux/Unix

Sie mรผssen nur das Terminal รถffnen und schreiben:

perl firstprog.pl		

Wenn Sie das Programm nicht ausfรผhren kรถnnen, stellen Sie sicher, dass Sie zur Ausfรผhrung berechtigt sind. Geben Sie im Terminal Folgendes ein:

chmod +x firstprog.pl		

Ihr Programm ist jetzt ausfรผhrbar und betriebsbereit. Schreiben Sie zum Ausfรผhren:

./firstprog		

Installieren Sie CPAN-Minus-Module

Module sind Codesรคtze, die fรผr Aufgaben verwendet werden, die gemeinsame Operationen in mehreren Programmen ausfรผhren. Wenn Sie Perl-Module verwenden, mรผssen Sie die Codes nicht neu schreiben, um dieselbe Operation auszufรผhren. Perl kann solche externen Codebibliotheken nutzen. Eine der besten Bibliotheken ist CPAN. Es steht fรผr Comprehensive Perl Archive Network und enthรคlt eine groรŸe Menge an Perl-Modulen, die Sie verwenden kรถnnen. Es ist eine Community oder ein Netzwerk einer groรŸen Anzahl von Entwicklern, die solche Module beisteuern. Indem Sie Unterstรผtzung fรผr CPAN-Module in Ihrem Perl-Modul installieren, kรถnnen Sie die CPAN-Module nutzen und Ihre Arbeit erleichtern. Die meisten Perl-Module sind in Perl geschrieben, einige verwenden XS (sie sind in C geschrieben) und erfordern daher einen C-Compiler (dieses Setup ist einfach โ€“ keine Panik. Module kรถnnen Abhรคngigkeiten von anderen Modulen haben (fast immer auf CPAN) und kรถnnen nicht ohne diese (oder ohne eine bestimmte Version davon) installiert werden. Es lohnt sich, die Dokumentation fรผr die folgenden Optionen grรผndlich zu lesen. Viele Module auf CPAN erfordern jetzt eine aktuelle Version von Perl (Version 5.8 oder hรถher). Installieren Sie cpanminus, ein Skript zum Abrufen, Entpacken, Erstellen und Installieren von Modulen von CPAN, um die Installation anderer Module zu vereinfachen (Sie werden uns spรคter danken). So installieren Sie App-cpanminus Perl-Module, geben Sie in der Befehlszeile Folgendes ein:

cpan App::cpanminus

cpan App::cpanminus Stellen Sie sicher, dass Sie รผber eine Internetverbindung verfรผgen, wรคhrend Perl-Module heruntergeladen und installiert werden.

Installieren von CPAN-Minus-Modulen

Installieren Sie nun ein beliebiges Modul:

cpan โ€“i <Module_Name>.		

Sehen wir uns ein Beispiel fรผr die Installation eines Moduls File::Data an (eine Schnittstelle fรผr den Zugriff auf Dateidaten).

Installieren von CPAN-Minus-Modulen

Perl-Variable

Jetzt werden wir รผber Variablen sprechen. Sie kรถnnen sich eine Variable wie eine Art Container vorstellen, der einen oder mehrere Werte enthรคlt. Einmal definiert, bleibt der Name der Variablen gleich, aber der Wert oder die Werte รคndern sich immer wieder.

Es gibt 3 Arten von Variablen:

Arten von Variablen in Perl

Arten von Variablen in Perl

Die einfachsten sind Skalare, und das ist unser heutiges Thema

Skalare Variable

Dieser Variablentyp enthรคlt einen einzelnen Wert.

Sein Name beginnt mit einem Dollarzeichen und einem Perl-Bezeichner (es ist der Name unserer Variablen).

Skalare Variable in Perl

Skalare Variable in Perl

Namenskonvention

Wenn Sie mit anderen Programmiersprachen vertraut sind, wissen Sie, dass es bestimmte Regeln fรผr die Benennung von Variablen gibt. Ebenso gibt es in Perl drei Regeln fรผr die Benennung von Skalaren.

  1. Alle skalaren Namen beginnen mit einem $. Es ist leicht, daran zu denken, jedem Namen ein $ voranzustellen. Betrachten Sie es als einen $-Skalar.
  2. Wie PHP. Nach dem ersten Zeichen $, das in Perl etwas Besonderes ist, sind alphanumerische Zeichen, also a bis z, A bis Z und 0 bis 9, erlaubt. Unterstrichzeichen sind ebenfalls zulรคssig. Verwenden Sie einen Unterstrich, um die Variablennamen in zwei Wรถrter aufzuteilen. โ€žAber das erste Zeichen darf keine Zahl seinโ€œ
  3. Obwohl Zahlen Teil des Namens sein kรถnnen, dรผrfen sie nicht direkt nach $ stehen. Das bedeutet, dass das erste Zeichen nach $ entweder ein Buchstabe oder ein Unterstrich ist. Diejenigen, die aus C/ kommen,C++ Hintergrund sollte sofort in der Lage sein, die ร„hnlichkeit zu erkennen. Beispiele

Perl-Beispiel:

$var;
$Var32;
$vaRRR43;
$name_underscore_23;

Dies sind jedoch keine zulรคssigen Skalarvariablennamen.

mohohoh                                              # $ character is missing 
$                                                    # must be at least one letter 
$47x                                           # second character must be a letter
$variable!                                 # you can't have a ! in a variable name

Die allgemeine Regel besagt: Wenn Perl nur eines von etwas hat, ist das ein Skalar. Skalare kรถnnen von Gerรคten gelesen werden und wir kรถnnen sie in unseren Programmen verwenden.

Zwei Arten von Skalardatentypen

  1. Numbers
  2. Streicher

Numbers:

In dieser Art von Skalardaten kรถnnten wir Folgendes angeben:

  • Ganzzahlen, einfach ganze Zahlen, wie 2, 0, 534
  • Gleitkommazahlen, es sind reelle Zahlen, wie 3.14, 6.74, 0.333

Zahlenvariablen in Perl

Hinweis: Im Allgemeinen betrachtet der Perl-Interpreter Ganzzahlen als Gleitkommazahlen. Wenn Sie beispielsweise 2 in Ihre Programme schreiben, betrachtet Perl sie als 2.0000

Ganzzahlige Literale:

Es besteht aus einer oder mehreren Ziffern, optional mit vorangestelltem Plus oder Minus und mit Unterstrichen.

Perl-Beispiele:

0;
-2542;
4865415484645          #this also can be written with underscores (for clarity) : 4_865_415_484_645

Wie Sie sehen, ist es nichts Besonderes. Aber glauben Sie mir, das ist die hรคufigste Art von Skalaren. Sie sind รผberall.

Gleitkomma-Literale:

Es besteht aus Ziffern, optional Minus, Dezimalpunkt und Exponent.

Perl-Beispiele:

3.14;
255.000;
3.6e20;                                  # it's 3.6 times 10 to the 20th
-3.6e20;                                 # same as above, but negative
-3.6e-20;                                #it's negative 3.6 times 10 to the -20th
-3.6E-20;                                #we also can use E โ€“ this means the same the lowercase version -3.6e-20

Gleitkomma-Literale in Perl

Oktale, hexadezimale und binรคre Darstellung:

Es ist eine Alternative zum Dezimalsystem. Erlauben Sie mir, Ihnen die oktale, hexadezimale und binรคre Darstellung zu zeigen. Eine kurze Tabelle prรคsentiert alle wichtigen Informationen zu diesem seltsamen Stil:

Vertretung Basis Weitergefรผhrt von
Oktal 8 0 (Null)
Hexadecimal 16 0x
Binรคr 2 0b

Perl-Beispiele:

255;                               # 255 in decimal notation
0377;                                   # 255 in octal notation
0xff;                                   # 255 in hexadecimal notation
0b11111111;                             # 255 in binary notation

Alle diese Werte bedeuten fรผr Perl dasselbe. Perl speichert die Werte nicht im gleichen Format. Diese hexadezimalen, binรคren und oktalen Werte werden intern in Dezimalwerte umgewandelt.

Die Zuweisung ist die hรคufigste Operation an einem Skalar und sie ist sehr einfach. Perl verwendet hierfรผr das Gleichheitszeichen. Es nimmt einen Wert des Ausdrucks von der rechten Seite und fรผgt diesen Wert unserer Variable hinzu.

Werfen wir einen Blick auf Beispiele:

$size=15;             # give $size value of 15
$y = -7.78;           # give $y value of -7.78

Darรผber hinaus kรถnnen Sie in Variablen nicht nur eine Zahl, sondern auch einen Ausdruck eingeben.

$z = 6 + 12               # give $z value of 18

Streicher

Strings: Es handelt sich ebenfalls um einen sehr einfachen Skalartyp.

Die maximale Lรคnge einer Zeichenfolge in Perl hรคngt von der Speicherkapazitรคt des Computers ab. Es gibt keine Begrenzung fรผr die GrรถรŸe der Zeichenfolge. Ihre Zeichenfolgen kรถnnen aus einer beliebigen Anzahl von Zeichen, Symbolen oder Wรถrtern bestehen. Die kรผrzeste Zeichenfolge enthรคlt keine Zeichen. Die lรคngste Zeit kann den gesamten Systemspeicher fรผllen. Perl-Programme kรถnnen vollstรคndig im 7-Bit-ASCII-Zeichensatz geschrieben werden. Perl ermรถglicht Ihnen auch das Hinzufรผgen eines beliebigen 8-Bit- oder 16-Bit-Zeichensatzes. Nicht-ASCII-Zeichen in Zeichenfolgenliteralen. Perl hat auch Unterstรผtzung fรผr Unicode UTF-8 hinzugefรผgt.

Arten von Strings in Perl

Wie bei Zahlen gibt es zwei verschiedene Arten von Zeichenfolgen:

  • String-Literale in einfache Anfรผhrungszeichen
  • Double zitiert String-Literale

String-Literale in einfachen Anfรผhrungszeichen

Einfache Anfรผhrungszeichen werden verwendet, um Daten einzuschlieรŸen, die wรถrtlich genommen werden sollen. Ein kurzes Beispiel und alles sollte klar sein:

Perl-Beispiele:

#!/usr/bin/perl 
$num = 7;
$txt = 'it is $num';
print $txt;

Ausgang:

es ist $num

Aufgrund der einfachen Anfรผhrungszeichen wird hier der Wert von $num nicht verwendet und die Literalzeichen โ€ž$โ€œ, โ€žnโ€œ, โ€žuโ€œ und โ€žmโ€œ werden zum Wert von $txt hinzugefรผgt

DoubleString-Literale in Anfรผhrungszeichen

Double Anfรผhrungszeichen werden verwendet, um Daten einzuschlieรŸen, die vor der Verarbeitung interpoliert werden mรผssen. Das bedeutet, dass Escape-Zeichen und Variablen nicht einfach wรถrtlich in spรคtere Operationen eingefรผgt, sondern an Ort und Stelle ausgewertet werden. Escape-Zeichen kรถnnen zum Einfรผgen von Zeilenumbrรผchen, Tabulatoren usw. verwendet werden.

Perl-Beispiele:

$num = 7; 
$txt = "it is $num"; 
print $txt;

Ausgang:

es ist 7

Aufgrund der Anfรผhrungszeichen wird hier der Wert von $num zum Wert von $txt addiert.

Double-Anfรผhrungszeichen interpolieren Skalar- und Arrayvariablen, aber keine Hashes. Andererseits kรถnnen Sie doppelte Anfรผhrungszeichen verwenden, um Ausschnitte sowohl von Arrays als auch von Hashes zu interpolieren.

Geheimnisvoll \n

Betrachten Sie das folgende Programm

Perl-Beispiele:

print "hello \n";

Ausgang:

HALLO

Perl zeigt nicht nur โ€žHallo\nโ€œ, sondern nur โ€žHalloโ€œ an. Warum? Denn โ€ž\nโ€œ ist ein Sonderzeichen und bedeutet, dass Sie beim Anzeigen des Textes in Ihrem Programm in eine neue Zeile wechseln mรถchten. print โ€žHallo\n neue Zeileโ€œ; Nรคchste Frage: Gibt es noch andere Sonderzeichen? Ja, sie sind! Aber keine Sorge โ€“ nur ein paar. Schauen Sie sich die Tabelle unten an

Konstruieren Beschreibung
\n Neue Zeile
\r Rรผckkehr
\t Tab
\f Seitenvorschub
\b Rรผcktaste
\a Glocke
\e Flucht
\ 007 beliebiger oktaler ASCII-Wert (hier 007 = Glocke)
\x7f beliebiger Hex-Wert (hier 7f = lรถschen)
\\ umgekehrter Schrรคgstrich
\ " Doppelzitat
\l Kleinschreibung des nรคchsten Buchstabens
\L alle folgenden Buchstaben bis \E kleinschreiben
\u GroรŸschreibung des nรคchsten Buchstabens
\U Alle folgenden Buchstaben bis \E werden groรŸ geschrieben
\E Beenden Sie \L, \U

Ich weiรŸ, es gibt nicht โ€žnur ein paarโ€œโ€ฆ Aber glauben Sie mir, Sie mรผssen es einfach wissen

Strings-Variable

Es handelt sich um dieselbe Operation, die wir bei der Zahlenzuweisung sehen. Perl holt sich den String von der rechten Seite des Gleichheitszeichens und fรผgt diesen String einer Variablen hinzu.

Perl-Beispiele:

$string = 'tutorial';                                      # give $string the eight-character string 'tutorial'
print $string;
$string = $size + 3 ;                                           # give $string the current value of $size plus 3
print $string;
$string = $ string * 5;                                         # multiplied $string by 5
print $string;

Ausgang:

Tutorial315

Wie Sie sehen, kรถnnen Sie Zahlen und Zeichenfolgen in dieselben Variablen einfรผgen. Es gibt keine Variablenklasse.

String-Verkettung (Punkt):

Der Verkettungsoperator โ€ž.โ€œ verbindet zwei oder mehr Zeichenfolgen. Denken Sie daran! Wenn die Zeichenfolge Anfรผhrungszeichen, Zeilenumbrรผche oder Backslashs enthรคlt, mรผssen alle diese Sonderzeichen mit einem Backslash maskiert werden.

Beispiele fรผr Perl-Variablen:

#!/usr/bin/perl
$a = "Tom is";
$b = "favorite cat";
$c = $a ." mother's ". $b;
print $c;

Ausgang:

Tom ist die Lieblingskatze der Mutter

Die Saiten

โ€ž$aโ€œ, โ€ž$bโ€œ werden mit dem Operator โ€ž.โ€œ verkettet und in โ€ž$cโ€œ gespeichert.

Schlussendlichโ€ฆ

Konvertierung zwischen Numbers und Strings:

Wie Sie wissen, konvertiert Perl bei Bedarf automatisch Zahlen in Zeichenfolgen. Woher weiรŸ Perl, was wir gerade brauchen? Das ist ganz einfach โ€“ alles hรคngt vom Operator ab (wir werden spรคter รผber Operatoren sprechen, akzeptieren Sie jetzt einfach, dass es viele Operatoren gibt, unterschiedliche fรผr Zahlen und Zeichenfolgen). Wenn ein Operator eine Zahl erwartet, verwendet Perl den Wert als Zahl. Wenn ein Operator eine Zeichenfolge erwartet, verwendet Perl den Wert als Zeichenfolge. Mit anderen Worten โ€“ Sie mรผssen sich รผber diese Art der Konvertierung keine Gedanken machen. Kurzes Beispiel und alles sollte klar sein:

Perl-Beispiele:

$string = "43";
$number = 28;
$result = $string + $number;
print $result;

Ausgang:

71

Der Wert von $string wird in eine Ganzzahl umgewandelt und zum Wert von $number addiert.

Das Ergebnis der Addition, 71, wird $result zugewiesen.

Geltungsbereich einer Variablen โ€“ Zugriffsmodifikatoren

Wir kรถnnen einen Skalar an einer beliebigen Stelle im Programm deklarieren. Sie mรผssen jedoch einen Zugriffsmodifikator angeben

Es gibt 3 Arten von Modifikatoren

  1. my
  2. aus einer regionalen
  3. UNSERE

My: Damit kรถnnen Sie jede Variable deklarieren, die innerhalb des Blocks spezifisch ist. also innerhalb der geschweiften Klammern.

#!/usr/bin/perl 
my $var=5;
if(1)
{ 
my $var_2 =$var;
}
print $var_2;

Keine Leistung

Die Ausgabe des Programms wird nichts sein!

PERL-Tutorial fรผr Anfรคnger โ€“ Komplette Anleitung

Im obigen Beispiel sehen Sie, dass zwei Variablen deklariert sind, eine innerhalb des If-Blocks ($var_2) und die andere auรŸerhalb des If-Blocks ($var). Auf die Variable, die auรŸerhalb des Blocks deklariert ist, kann der Block zugreifen, auf die Variable, die innerhalb des Blocks deklariert wurde, kann das รคuรŸere Programm jedoch nicht zugreifen.

Lokal: Damit kรถnnen wir tatsรคchlich dieselben Variablenwerte in unterschiedliche Werte maskieren, ohne den ursprรผnglichen Wert der Variablen tatsรคchlich zu รคndern. Angenommen, wir haben eine Variable $a, fรผr die der Wert 5 zugewiesen ist, kรถnnen Sie den Wert dieser Variablen tatsรคchlich um รคndern Erneute Deklaration derselben Variablen mit dem lokalen Schlรผsselwort, ohne den ursprรผnglichen Wert der Variablen zu รคndern, der 5 ist. Sehen wir uns anhand eines Beispiels an, wie das funktioniert.

#!/usr/bin/perl
$var = 5;
{
local $var = 3;
print "local,\$var = $var \n";
}
print "global,\$var = $var \n";

Die Ausgabe des obigen Programms erfolgt auf diese Weise.

lokal, $var = 3

global, $var = 5

Auf diese Weise kรถnnen wir den Wert der Variablen รคndern, ohne den ursprรผnglichen Wert zu beeinflussen.

Our: Sobald eine Variable mit dem Zugriffsmodifikator โ€žourโ€œ deklariert wurde, kann sie im gesamten Paket verwendet werden. Angenommen, Sie haben ein Perl-Modul oder ein Paket test.pm, das eine Variable mit dem Gรผltigkeitsbereich our deklariert hat. Auf diese Variable kann in allen Skripten zugegriffen werden, die dieses Paket verwenden.

Wenn Sie es mit der Programmierung in Perl ernst meinen, sollten Sie Ihr Programm mit beginnen

#!/usr/local/bin/perl

Verwenden Sie strenge;

Dies wird Ihnen helfen, besseren und saubereren Code zu schreiben. โ€žuse strictโ€œ aktiviert das strikte Pragma, wodurch Sie Ihre Variablen mit dem Schlรผsselwort my deklarieren kรถnnen.

Dies ist eine gute Programmierpraxis

#!/usr/local/bin/perl
use strict;
$var = 10;
print "$var";

Ergebnis: Fehler

#!/usr/local/bin/perl
use strict;
my $var = 10;
print "$var";

Ausgang:

10

Perl-Array

Was ist ein Perl-Array?

Ein Array ist ein spezieller Variablentyp, der Daten in Form einer Liste speichert. Auf jedes Element kann รผber die Indexnummer zugegriffen werden, die fรผr jedes einzelne Element eindeutig ist. Sie kรถnnen Zahlen, Zeichenfolgen, Gleitkommawerte usw. in Ihrem Array speichern. Das sieht groรŸartig aus. Wie erstellen wir also ein Array in Perl? In Perl kรถnnen Sie ein Array mit dem Zeichen โ€ž@โ€œ definieren, gefolgt von dem Namen, den Sie vergeben mรถchten. Betrachten wir die Definition eines Arrays in Perl.

mein @array;

So definieren wir ein Array in Perl; Sie denken vielleicht darรผber nach, wie wir Daten darin speichern mรผssen. Es gibt verschiedene Mรถglichkeiten, Daten in einem Array zu speichern. Dies hรคngt davon ab, wie Sie es verwenden werden.

my @array=(a,b,c,d);
print @array;

Ausgang:

abcd

Dies ist ein Array mit 4 Elementen darin.

Der Array-Index beginnt bei 0 und endet bei seiner maximal deklarierten GrรถรŸe. In diesem Fall betrรคgt die maximale IndexgrรถรŸe 3.

Beispiel fรผr ein Perl-Array

Beispiel fรผr ein Perl-Array

Sie kรถnnen ein Array auch auf die oben beschriebene Weise deklarieren; Der einzige Unterschied besteht darin, dass Daten in einem Array gespeichert werden, wobei ein Leerzeichen als Trennzeichen dient. Hier bedeutet qw() Anfรผhrungszeichen. Die Bedeutung dieser Funktion besteht darin, eine Liste von Wรถrtern zu erstellen. Sie kรถnnen qw auf verschiedene Arten verwenden, um ein Array zu deklarieren.

@array1=qw/a b c d/;
@array2= qw' p q r s'; 
@array3=qw { v x y z};
print @array1;
print @array2;
print @array3;

Ausgang:

abcdpqrsvxyz

Angenommen, Sie mรถchten der 5 einen Wert zuweisenth Element eines Arrays, wie machen wir das?

$array [4] ='e';

Sequentielles Array

Sequentielle Arrays sind solche, in denen Sie Daten sequentiell speichern. Angenommen, Sie mรถchten 1-10 Zahlen oder Buchstaben a-z in einem Array speichern. Anstatt alle Buchstaben einzugeben, kรถnnen Sie etwas wie das Folgende versuchen โ€“

@numbers= (1..10);
print @numbers;                   #Prints numbers from 1 to 10;

Ausgang:

12345678910

Perl-Array-GrรถรŸe

Wir haben ein Array, das bereits verfรผgbar ist, und Sie wissen nicht, wie groรŸ dieses Array ist. Wie kรถnnen Sie das also herausfinden?

@array= qw/a b c d e/;
print $size=scalar (@array);

Kรถnnen wir die GrรถรŸe eines Arrays ermitteln, ohne Funktionen zu verwenden? Ja wir kรถnnen.

@array= qw/a b c d e/;
print $size=scalar (@array);
print "\n";
print $size=$#array + 1;                           # $#array will print the Max Index of the array, which is 5 in this case

Ausgang:

5

5

Dynamisches Array

Die obige Methode zum Deklarieren eines Arrays wird aufgerufen statische Arrays, wobei Sie die GrรถรŸe eines Arrays kennen.

Was ist ein dynamisches Array?

Dynamische Arrays sind solche, die Sie deklarieren, ohne einen Wert anzugeben. Wann genau speichern wir also Werte in diesem Array? Ganz einfach: Wir speichern sie zur Laufzeit. Hier ist ein einfaches Programm dafรผr.

Fรผr diese Aufgabe werden wir einige integrierte Perl-Funktionen verwenden.

my $string="This is a kind of dynamic array";
my @array;
@array=split('a',$string);
foreach(@array)
{
print "$_ \nโ€;
# This is a special variable which stores the current value.
}

Ausgang:

Das ist

irgendwie dyn

mic

rr

y

Die Split-Funktion teilt den Inhalt der Zeichenfolge basierend auf dem ihr bereitgestellten Trennzeichen in ein Array auf. Diese Funktion entfernt auch das Trennzeichen aus der Zeichenfolge, in diesem Fall ist es โ€žaโ€œ;

Push, Pop, Shift, Unshift fรผr Perl-Arrays:

Diese Funktionen kรถnnen in Perl zum Hinzufรผgen/Lรถschen von Array-Elementen verwendet werden.

  • Perl Push: Fรผgt ein Array-Element am Ende eines vorhandenen Arrays hinzu.
  • Perl Pop: Entfernt das letzte Element aus einem Array.
  • Perl Shift: Entfernt das erste Element aus einem Array.
  • Perl Unshift: fรผgt am Anfang eines Arrays ein Element hinzu.

Array-Funktionen in Perl

Sehen wir uns ein Beispiel an, in dem wir die folgenden Funktionen verwenden kรถnnen.

@days = ("Mon","Tue","Wed");
print "1st : @days\n";
push(@days, "Thu");                                             # adds one element at the end of an array
print "2nd when push : @days\n";
unshift(@days, "Fri");                                          # adds one element at the beginning of an array
print "3rd when unshift : @days\n";
pop(@days);
print "4th when pop : @days\n";                                 # remove one element from the last of an array.
shift(@days);                                                   # remove one element from the beginning of an array.
print "5th when shift : @days\n";

Ausgang:

1.: Mo. Di. Mi

2. bei Push: Mo. Di. Mi. Do

3. wenn die Verschiebung rรผckgรคngig gemacht wird: Fr., Mo., Di., Mi., Do.

4. wenn Pop: Fr Mo Di Mi

5. Schicht: Mo Di Mi

Perl-Hashes

Warum brauchen wir Hash?

Wir haben bereits in den vorherigen Abschnitten etwas รผber Skalare und Arrays gelernt.

Was genau machen Skalare? Es speichert nur Ganzzahlen und Zeichenfolgen.

Was genau machen Arrays? Es handelt sich um eine Sammlung von Skalaren, bei der Sie รผber Indizes auf jedes Element eines Arrays zugreifen. Aber ist die Verwendung eines Arrays eine gute Idee, wenn Sie Hunderte und Tausende von Datensรคtzen haben? Wir werden vergessen, welcher Index welchen Wert hat. Um diese Situation zu รผberwinden, haben wir so etwas wie Perl-Hash.

Was sind Hashes?

Ein Hash kann auch so viele Skalare enthalten, wie das Array aufnehmen kann. Der einzige Unterschied besteht darin, dass wir keinen Index haben, sondern Schlรผssel und Werte. Ein Hash kann deklariert werden, beginnend mit % gefolgt vom Namen des Hashs. Sehen wir uns ein Beispiel an, wie wir einen Perl-Hash definieren und wie wir ihn von einem Array unterscheiden kรถnnen

Betrachten Sie ein Beispiel mit drei Personen, deren Alter in einem Array dargestellt wird.

@array=('Sainath',23,'Krishna',24,'Shruthi',25);        #This is how an array looks.
print @array;

Ausgang:

Sainath33Krishna24Shruthi25

Auf diese Weise ist es schwierig, das einzelne Alter zu ermitteln, da wir uns sowohl die Indexpositionen des Namens als auch das Alter aller Personen merken mรผssen. Es mag einfach sein, wenn Sie drei Namen haben, aber wenn Sie 3 oder mehr haben? Du kennst die Antwort.

Hashes in Perl

Dies kรถnnen wir mit einem Hash umgehen.

Hash-Beispiel:

print %hash=( 'Sainath' => 23, 'Krishna' => 24, 'Shruthi' => 25); # This is how we create a hash.
print %hash=('Sainath',23,'Krishna',24,'Shruthi',25);# This way of assigning is called list.

Ausgang:

Sainath33Krishna24Shruthi25Sainath33Krishna24Shruthi25

Wir haben jetzt einen Hash deklariert, groรŸartig!! Aber wie kรถnnen wir darauf zugreifen oder es ausdrucken? Auf jedes Element im Hash sollte mit dem zugehรถrigen Schlรผssel zugegriffen werden, dem ein Wert zugewiesen wird. Es gibt also eine Eins-zu-Eins-Zuordnung zwischen jedem Schlรผssel und Wert im Hash.

Um das Alter einer Person auszudrucken, mรผssen Sie sich lediglich den Namen dieser Person merken.

print $hash{'Krishna'};          # This how we should access a hash. Key enclosed within {}.

Sie haben sich vielleicht gefragt, warum ich $hash{KeyName} verwendet habe. Denken Sie daran, dass ein Hash wiederum eine Sammlung von Skalaren ist. Wir kรถnnen also $ verwenden, das einen Skalar darstellt, um auf jedes Hash-Element zuzugreifen.

Beispiel fรผr Hash in Perl

Hinweis: Jeder Schlรผssel im Hash sollte eindeutig sein, sonst รผberschreibt er Ihren zuvor zugewiesenen Wert.

Wie kรถnnen wir einen Hash einem anderen Hash zuweisen? Ganz einfach, genauso wie wir es tun

Wir kรถnnen auch den gesamten Hash drucken.

%hash=( 'Tom' => 23);
%newHash=%hash; # Assigning hash to a new hashprint %newHash; 
print %newHash;

Ausgang:

Tom23

Fรผgen Sie Perl-Hashes hinzu

Wie Sie sehen, haben wir bereits einen Hash %newHash und mรผssen ihm nun weitere Eintrรคge hinzufรผgen.

$newHash{'Jim'}=25;
$newHash{'John'}=26;
$newHash{'Harry'}=27;
print %newHash;

Ausgang:

Jim25John26Harry27

Perl-Lรถschtaste

Mรถglicherweise mรถchten Sie einen Eintrag aus einem Hash lรถschen. So kรถnnen wir das machen.

delete $newHash{'Jim'};#This will delete an entry from the hash.

Lรถschen ist eine integrierte Funktion von Perl. Hier sehen wir ein Beispiel fรผr die Zuweisung eines Hashs zu einem Array.

@array=%newHash;
print "@array";

Hinweis: Immer wenn Sie einen Hash drucken oder Hash in einem Array speichern. Die Reihenfolge kann immer abweichen. Es ist nicht immer dasselbe.

Wir kรถnnen einem Array nur Schlรผssel oder Werte eines Hashs zuweisen.

@arraykeys= keys(%newHash);
@arrayvalues=values(%newHash);
print "@arraykeys\n";
print "@arrayvalues\n";    # \n to print new line.		

Um alle Eintrรคge im Hash zu entfernen, kรถnnen wir den Hash direkt null zuweisen.

%newHash=();# Dadurch wird der Hash ohne Eintrรคge neu definiert.

Bedingte Perl-Anweisungen

Wir kรถnnen bedingte Anweisungen in Perl verwenden. Was sind also bedingte Anweisungen? Bedingte Anweisungen sind solche, bei denen Sie tatsรคchlich prรผfen, ob bestimmte Umstรคnde in Ihrem Code erfรผllt sind.

Denken Sie an ein Beispiel: Sie kaufen ein paar Frรผchte und mรถchten nicht, dass der Preis mehr als 100 Dollar betrรคgt. Die Regel lautet hier also 100 Dollar.

Perl unterstรผtzt zwei Arten von bedingten Anweisungen; Sie sind wenn und sofern nicht.

Perl If

Wenn der Codeblock ausgefรผhrt wird, wenn die Bedingung wahr ist.

Bedingte Perl-Anweisungen

my $a=5;
if($a==5)
{
   print "The value is $a";
}

Ausgang:

5

Perl, wenn sonst

Das sieht gut aus. Denken wir an eine Situation, in der $a nicht 5 ist.

my $a=10;
if($a==5)
{
    print "The values is $a ---PASS";
}
else
{
    print "The value is $a ---FAIL";
}

Ausgang:

Der Wert ist 10 โ€“ FAIL

Auf diese Weise kรถnnen wir jeweils nur eine Bedingung steuern. Handelt es sich um eine Einschrรคnkung? Nein, Sie kรถnnen verschiedene Bedingungen auch mit ifโ€ฆ elsif โ€ฆ else steuern.

Perl Else If

my $a=5;
if($a==6)
{
    print "Executed If block -- The value is $a";
}
elsif($a==5)
{
    print "Executed elsif block --The value is $a";
}
else
{
    print "Executed else block โ€“ The value is $a";
}

Ausgang:

Ausgefรผhrter elsif-Block โ€“ Der Wert ist 5

Im obigen Fall wird der elsif-Block ausgefรผhrt, da $a gleich 5 ist.

Es kann Situationen geben, in denen sowohl if- als auch elsif-Codeblรถcke fehlschlagen. In diesem Szenario wird der else-Codeblock ausgefรผhrt. Sie kรถnnen die else-Codeprรผfung tatsรคchlich eliminieren, wenn Sie sie nicht einbinden mรถchten.

Perl verschachteltes If

In diesem Fall kรถnnen Sie den if-Codeblock in einem weiteren if-Codeblock verwenden.

my $a=11; #Change values to 11,2,5 and observe output
if($a<10){
  print "Inside 1st if block";
        if($a<5){
                print "Inside 2nd if block --- The value is $a";
        }
        else{
                print " Inside 2nd else block --- The value is $a";
        }
	}
	else{
        	print "Inside 1st else block โ€“ The value is $a";
    }

Ausgang:

Im ersten else-Block โ€“ Der Wert ist 1

Fรผhren Sie denselben Code aus, indem Sie den Wert von $a รคndern. Den Rest kรถnnt ihr herausfinden.

Perl Es sei denn

Sie haben bereits eine Vorstellung davon, was passiert (wenn die Bedingung wahr ist, wird der Codeblock ausgefรผhrt). Unless ist das Gegenteil von if, es sei denn, der Codeblock wird ausgefรผhrt, wenn die Bedingung falsch ist.

my $a=5;
unless($a==5)
{
   print "Inside the unless block --- The value is $a";
}
else
{
   print "Inside else block--- The value is $a";
}

Ausgang:

Im ersten else-Block โ€“ Der Wert ist 1

Ratet mal, was das Ergebnis sein wird. Du hast Recht!!!!!. Die Ausgabe ist die print-Anweisung des else-Blocks. Da die Bedingung im Codeblock โ€žEs sei dennโ€œ wahr ist, denken Sie daran, dass der Block โ€žEs sei dennโ€œ nur dann ausgefรผhrt wird, wenn die Bedingung falsch ist. ร„ndern Sie den Wert von $a und fรผhren Sie den Code aus. Sie werden den Unterschied sehen.

Perl mit if

$a= " This is Perl";
if($a eq "SASSDSS"){
print "Inside If Block";
}
else
{
print "Inside else block"
}

Ausgang:

Innerhalb des else-Blocks

Verwenden, sofern nicht

$a= " This is Perl";
unless($a eq "SASSDSS"){
print "Inside unless Block";
}
else
{
print "Inside else block"
}

Ausgang:

Drinnen, sofern nicht blockiert

Perl-Schleifen โ€“ Kontrollstrukturen

Perl unterstรผtzt Kontrollstrukturen รคhnlich wie andere Programmiersprachen. Perl unterstรผtzt vier Arten von Kontrollstrukturen fรผr, foreach, while und Until. Wir verwenden diese Anweisungen, um wiederholt Code auszufรผhren.

For-Schleife Perl

Der Codeblock wird ausgefรผhrt, bis die Bedingung erfรผllt ist. Nehmen wir ein Beispiel fรผr die Perl-Schleife eines Arrays.

my @array=(1..10);
for(my $count=0;$count<10;$count++)
{
    print "The array index $count value is $array[$count]";
    print "\n";
}

Ausgang:

Der Wert des Array-Index 0 ist 1

Der Wert des Array-Index 1 ist 2

Der Wert des Array-Index 2 ist 3

Der Wert des Array-Index 3 ist 4

Der Wert des Array-Index 4 ist 5

Der Wert des Array-Index 5 ist 6

Der Wert des Array-Index 6 ist 7

Der Wert des Array-Index 7 ist 8

Der Wert des Array-Index 8 ist 9

Der Wert des Array-Index 9 ist 10

Hier sind im for()-Ausdruck viele Anweisungen enthalten. Fรผr jeden von ihnen gibt es eine Bedeutung.

for (Initialisierung; Bedingung; Inkrementierung)

Hier ist eine andere Mรถglichkeit, for zu verwenden.

for(1..10)
{
    print "$_ n";
    print "\n";
}

Ausgang:

1n

2n

3n

4n

5n

6n

7n

8n

9n

10n

Perl Foreach

Die for every-Anweisung kann auf die gleiche Weise wie for verwendet werden; Der Hauptunterschied besteht darin, dass wir hier keine Bedingungsprรผfung und keine Inkrementierung durchfรผhren.

Nehmen wir das gleiche Beispiel mit foreach perl.

my @array=(1..10);
foreach my $value (@array)
{  
	print " The value is $value\n";
}

Ausgang:

Der Wert ist 1

Der Wert ist 2

Der Wert ist 3

Der Wert ist 4

Der Wert ist 5

Der Wert ist 6

Der Wert ist 7

Der Wert ist 8

Der Wert ist 9

Der Wert ist 10

Foreach nimmt jedes Element eines Arrays und weist diesen Wert fรผr jede Iteration $var zu. Wir kรถnnen dafรผr auch $_ verwenden.

my @array=(1..10);
foreach(@array)
{
    print " The value is $_ \n"; # This is same as the above code.
}

Ausgang:

Der Wert ist 1

Der Wert ist 2

Der Wert ist 3

Der Wert ist 4

Der Wert ist 5

Der Wert ist 6

Der Wert ist 7

Der Wert ist 8

Der Wert ist 9

Der Wert ist 10

Das sieht fรผr den Zugriff auf Arrays gut aus. Wie wรคre es mit Hashes? Wie kรถnnen wir mit foreach Hash-Schlรผssel und -Werte erhalten?

Wir kรถnnen foreach verwenden, um durch Schleifen auf Schlรผssel und Werte des Hashs zuzugreifen.

For-Schleife in Perl

my %hash=( 'Tom' => 23, 'Jerry' => 24, 'Mickey' => 25);
foreach my $key (keys %hash)
{
print "$key \n";
}

Ausgang:

Mickey

Tom

Jerry

Sie fragen sich vielleicht, warum wir in foreach() Schlรผssel verwendet haben. Keys ist eine integrierte Funktion von Perl, mit der wir schnell auf die Schlรผssel des Hashs zugreifen kรถnnen. Wie wรคre es mit Werten? Wir kรถnnen die Wertefunktion verwenden, um auf die Werte des Hashs zuzugreifen.

my %hash=( 'Tom' => 23, 'Jerry' => 24, 'Mickey' => 25);
foreach my $value(values %hash) # This will push each value of the key to $value
{
	 print " the value is $value \n";
}

Ausgang:

der Wert ist 24

der Wert ist 23

der Wert ist 25

Perl While

Die Perl While-Schleife ist eine Kontrollstruktur, in der der Codeblock ausgefรผhrt wird, bis die Bedingung wahr ist.

Der Codeblock wird nur beendet, wenn die Bedingung falsch ist.

Nehmen wir ein Beispiel fรผr eine Perl-While-Schleife.

While-Schleife in Perl

Hier liegt ein Problem vor, das eine Eingabe durch den Benutzer erfordert und erst bei der als โ€ž7โ€œ angegebenen Zahl behoben wird.

#!/usr/bin/perl
$guru99 = 0;
$luckynum = 7;
print "Guess a Number Between 1 and 10\n";
$guru99 = <STDIN>;
while ($guru99 != $luckynum)
{
	print "Guess a Number Between 1 and 10 \n ";
	$guru99 = <STDIN>;
}
print "You guessed the lucky number 7"

Ausgang:

Erraten Sie eine Zahl zwischen 1 und 10

9

Erraten Sie eine Zahl zwischen 1 und 10

5

Erraten Sie eine Zahl zwischen 1 und 10

7

Sie haben die Glรผckszahl 7 erraten

Im obigen Beispiel ist die while-Bedingung nicht wahr, wenn wir eine andere Eingabe als โ€ž7โ€œ eingeben.

Wenn Sie hier sehen, wie while funktioniert, wird der Codeblock nur ausgefรผhrt, wenn die Bedingung in a while wahr ist.

Perl do-while

Die Do-while-Schleife wird mindestens einmal ausgefรผhrt, auch wenn die Bedingung im while-Abschnitt falsch ist.

Nehmen wir das gleiche Beispiel, indem wir do while verwenden.

$guru99 = 10;
 do {
 print "$guru99 \n";
 $guru99--;
 } 
 while ($guru99 >= 1);
 print "Now value is less than 1";

Ausgang:

10

9

8

7

6

5

4

3

2

1

Jetzt ist der Wert kleiner als 1

Perl bis

Der Codeblock โ€žUntilโ€œ รคhnelt โ€žauรŸerโ€œ in einer bedingten Anweisung. Hier wird der Codeblock nur ausgefรผhrt, wenn die Bedingung im Until-Block falsch ist.

Nehmen wir das gleiche Beispiel, das wir schon einmal verwendet haben.

Hier liegt ein Problem vor, das eine Eingabe durch den Benutzer erfordert und erst behoben wird, wenn ein anderer Name als โ€žsaiโ€œ angegeben wird.

print "Enter any name \n";
 my $name=<STDIN>;
 chomp($name);
 until($name ne 'sai')
 {
    print "Enter any name \n";
    $name=<STDIN>;
    chomp($name);
 }

Ausgang:

Geben Sie einen beliebigen Namen ein, sai

Perl do-bis:

โ€žDo Untilโ€œ kann nur verwendet werden, wenn eine Bedingung falsch sein muss und diese mindestens einmal ausgefรผhrt werden sollte.

print "Enter any name \n";
 my $name=<STDIN>;
 chomp($name);
 do
 {
     print "Enter any name \n";
     $name=<STDIN>;
    chomp($name);
 }until($name ne 'sai');

Ausgang:

Geben Sie einen beliebigen Namen ein, Howard

Geben Sie einen beliebigen Namen ein, Sheldon

Geben Sie einen beliebigen Namen ein, sai

Fรผhren Sie die Beispielcodes โ€žwhileโ€œ, โ€ždo-whileโ€œ, โ€žuntilโ€œ und โ€ždo-untilโ€œ aus, um den Unterschied zu erkennen.

Perl OperaDo.

Was ist Operator?

OperaTore in der Computersprache geben eine Aktion an, die an einer Reihe von Variablen oder Werten ausgefรผhrt werden kann, die der Computer verstehen kann. Perl hat die meisten davon integriert Operators aus der Sprache C. Perl hat im Vergleich zu anderen Programmiersprachen viele Operatoren. OperaTore werden als arithmetische, logische, relationale und Zuweisungsoperatoren kategorisiert.

Arithmetik OperaTore:

Arithmetische Operatoren sind solche, die verwendet werden kรถnnen, um einige grundlegende mathematische Operationen auszufรผhren. Diese arithmetischen Operatoren sind binรคre Operatoren, bei denen wir zwei Argumente benรถtigen, um eine grundlegende Operation auszufรผhren. Wir kรถnnen auch unรคre Operatoren fรผr andere grundlegende Operationen verwenden; Sie kรถnnen den Unterschied in den folgenden Beispielen sehen.

OperaDo. Beschreibung Beispiel

+

Additionsoperation zum Addieren zweier Werte oder Variablen

Werte halten

$x=5+6; # oder

$y=6;

$z=$x+$y;

-

Subtraktionsoperator zum Subtrahieren zweier Werte oder Variablen, die Werte enthalten

$x=6-5; # oder

$y=6;

$z=$x-$y;

*

Multiplikationsoperator zum Multiplizieren zweier Werte oder Variablen mit Werten

$x=6*5; # oder

$y=6;

$z=$x*$y;

/

Divisionsoperator zum Dividieren zweier Werte oder Variablen, die Werte enthalten

$x=36/6; # oder

$y=6;

$z=$x/$y;

**

Der Exponentialoperator wird verwendet, um den Exponenten bereitzustellen und den Wert abzurufen.

Beispiel: 22 = 43 = 27

$x=5**5; # oder

$x=4;

$y=2;

$z=$x**$y;

%

Modulo-Operator, der verwendet wird, um die Erinnerung bei der Division zweier Werte oder Variablen mit Werten zu erhalten

$x=5%2; # oder

$x=10;

$y=2;

$z=$x % $y;

++

Unรคrer Additionsoperator zum Erhรถhen des Wertes einer Variablen um 1

$x=5;

$x++;

Or

++$x;

-

Unรคrer Subtraktionsoperator zum Dekrementieren des Wertes einer Variablen um 1

$x=5;

$xโ€“; # Beitragsdekrement

Or

โ€“$x;# vor der Dekrementierung

Beispiel zum AbschlieรŸen aller oben genannten Vorgรคnge.

my $x=10;
my $y=2;
my $z;
$z=$x+$y;
print ("Add of $x and $y is $z \n");
$z=$x-$y;
print ("Sub of $x and $y is $z \n");
$z=$x*$y;
print ("Mul of $x and $y is $z \n");
$z=$x/$y;
print ("Div of $x and $y is $z \n");
$z=$x**$y;
print ("Exp of $x and $y is $z \n");
$z=$x%$y;
print ("Mod of $x and $y is $z \n");

Ausgang:

Die Addition von 10 und 2 ergibt 12

Sub von 10 und 2 ist 8

Mul von 10 und 2 ist 20

Div von 10 und 2 ist 5

Exp von 10 und 2 ist 100

Mod von 10 und 2 ist 0

Zuordnung OperaTore:

Zuweisungsoperatoren weisen Variablen einfach Werte zu. Dabei gibt es jedoch noch etwas, das wir beachten mรผssen: Zuweisungsoperatoren fรผhren auch arithmetische Operationen aus und weisen den neuen Wert derselben Variablen zu, an der die Operation ausgefรผhrt wird.

OperaDo. Beschreibung Beispiel

+=

Additionsoperator zum Hinzufรผgen und Zuweisen des Wertes zur gleichen Variablen

$x=4;

$x+=10;

-=

Subtraktionsoperator zum Subtrahieren und Zuweisen des Wertes zur gleichen Variablen

$x=4;

$x-=10;

*=

Multiplikationsoperator zum Hinzufรผgen und Zuweisen des Wertes zur gleichen Variablen

$x=4;

$x*=10;

/=

Divisionsoperator zum Dividieren und Zuweisen des Wertes zur gleichen Variablen

$x=4;

$x/=10;

**=

Exponentialoperator zum Abrufen des Exponenten und Zuweisen des Werts zur gleichen Variablen

$x=4;

$x**=10;

%=

Modulo-Operator, der verwendet wird, um wรคhrend der Division eine Erinnerung zu erhalten und den Wert derselben Variablen zuzuweisen

$x=10;

$x%=4;

Beispiel zum AbschlieรŸen aller oben genannten Vorgรคnge.

my $x=10;
$x+=5;
print("Add = $x\n");
$x-=5;
print("Sub= $x\n");
$x*=5;
print("Mul = $x\n");
$x/=5;
print("Div = $x\n");

Ausgang:

Addieren = 15

Sub= 10

Mul = 50

Div = 10

Logisch und relational OperaTore:

Perl verwendet logische Operatoren zum Vergleichen von Zahlen und Zeichenfolgen. Meistens werden logische Operatoren in bedingten Anweisungen verwendet.

Logisch und relational Operatoren in Perl

Logisch und relational Operatoren in Perl

OperaDo. Beschreibung

==oder Gl

OperaMit diesem Tor wird รผberprรผft, ob beide Variablen gleich sind

!=Oder ne

OperaTor wird verwendet, um zu prรผfen, ob beide Variablen nicht gleich sind

> oder gt

Operator verwendet, um zu รผberprรผfen, ob

A ist grรถรŸer als B.

<oder lt

Operator verwendet, um zu รผberprรผfen, ob

A ist kleiner als B.

>=oder ge

Operator verwendet, um zu รผberprรผfen, ob

A ist grรถรŸer oder gleich B

<=oder le

Operator verwendet, um zu รผberprรผfen, ob

A ist kleiner oder gleich B

|| oder oder

OperaTor wird verwendet, um zu รผberprรผfen, ob A oder B den Wert halten

&&oder und

OperaTor, mit dem รผberprรผft wird, ob sowohl A als auch B den Wert halten

Nehmen wir ein Beispiel, an dem wir alle Szenarien erklรคren kรถnnen.

my $x=5;
my $y=5;
if($x == $y){
print ("True -- equal $x and $y \n");
}
else{
print ("False -- not equal $x and $y\n");
}
$x=6;
$y=7;
if($x != $y){
print ("True -- not equal $x and $y\n");
}
else{
print ("False -- equal $x and $y\n");
}
if($y > $x){
print ("True -- $y greater than $x\n");
}
else{
print ("False -- $y greater than $x\n");
}
if($x < $y){
print ("True -- $x less than $y\n");
}
else{
print ("False -- $x less than $y\n");
}
if($x <= $y){
print ("True -- $x less than $y\n");
}
else{
print ("False -- $x less than $y\n");
}
if($y >= $x){
print ("True -- $y greater than $x\n");
}
else{
print ("False -- $y greater than $x\n");
}

Ausgang:

Stimmt โ€“ gleich 5 und 5

Stimmt โ€“ nicht gleich 6 und 7

Stimmt โ€“ 7 grรถรŸer als 6

Stimmt โ€“ 6 weniger als 7

Stimmt โ€“ 6 weniger als 7

Stimmt โ€“ 7 grรถรŸer als 6

Beispiele fรผr logische Operatoren finden Sie in spรคteren Abschnitten.

Spezielle Perl-Variablen

Was sind spezielle Perl-Variablen?

Spezielle Variablen in Perl sind solche, die eine vordefinierte Bedeutung haben. Diese Variablen werden entweder mit echten Namen oder Satzzeichen gekennzeichnet. Wir haben eine spezielle Variable fรผr alle von Perl unterstรผtzten Variablen wie skalare Spezialvariablen, Array-Spezialvariablen und Hash-Spezialvariablen. Die meisten der von uns verwendeten speziellen Variablen sind Skalare.

Wenn wir die spezielle Variable mit ihrem Namen verwenden mรถchten, mรผssen wir ein Perl-Modul โ€žUse Englishโ€œ laden, um dem Perl-Interpreter explizit mitzuteilen, dass wir spezielle Variablen mit ihrem Namen verwenden werden.

Skalare Spezialvariablen

Variable Beschreibung

$_$ARG

Dies ist die Standardvariable, die die aktuellen Werte speichert.

$0 oder $PROGRAM_NAME

Speichert den Dateinamen des Perl-Skripts.

$/

Das Trennzeichen fรผr den Eingabedatensatz hat den Standardwert โ€ž\nโ€œ, bei dem es sich um ein Zeilenumbruchzeichen handelt

$.

Enthรคlt die aktuelle Zeilennummer der Datei, die gelesen wird

$,

Ausgabefeldtrennzeichen, wird hauptsรคchlich von der print()-Anweisung verwendet. Der Standardwert ist auf 0 gesetzt, wir kรถnnen den Wert dieser Variablen รคndern.

$\

Ausgabedatensatztrennzeichen, der Wert dieser Variablen ist leer; Wir kรถnnen diesem einen beliebigen Wert zuweisen, der von der print()-Anweisung beim Drucken der Ausgabe verwendet wird.

$#

Diese Variable wird beim Drucken von Zahlen fรผr das Ausgabeformat verwendet.

$%$FORMAT_PAGE_NUMBER

Enthรคlt die aktuelle Seitenzahl der gelesenen Datei.

$=$FORMAT_LINES_PER_PAGE

Hรคlt die aktuelle Seitenlรคnge der gelesenen Datei.

$-$FORMAT_LINES_LEFT

Enthรคlt den Wert der Anzahl der Zeilen, die auf der Seite noch gedruckt werden mรผssen.

$~$FORMAT_NAME

Formatname: Enthรคlt das Format der aktuell ausgewรคhlten Ausgabe, standardmรครŸig den Datei-Handle-Namen.

$^$FORMAT_TOP_NAME

Enthรคlt den Wert des รœberschriftenformats des Dateihandlers. Der Standardwert ist _TOP, gefolgt vom Namen des Dateihandles.

$|$OUTPUT_AUTOFLUSH

Der Standardwert ist Null; dies wird verwendet, um den Ausgabepuffer nach jedem write() oder print() zu leeren.

$$

Enthรคlt die laufende Prozessnummer des Perl-Interpreters.

$?

Statuscode: Pipe und Systemaufruf. Der Rรผckgabestatus des ausgefรผhrten Befehls.

$&$MATCH

Wird in regulรคren Ausdrรผcken verwendet und enthรคlt eine Zeichenfolge des letzten erfolgreichen Mustervergleichs.

$`$VORSPIEL

Wird in regulรคren Ausdrรผcken verwendet und enthรคlt eine Zeichenfolge, der die letzte erfolgreiche Musterรผbereinstimmung vorangestellt ist.

$'$POSTMATCH

In regulรคren Ausdrรผcken verwendet, enthรคlt dies eine Zeichenfolge, gefolgt von der letzten erfolgreichen Musterรผbereinstimmung.

$+$LAST_PAREN_MATCH

Enthรคlt die Zeichenfolge der letzten Klammer, die bei der letzten Mustersuche gefunden wurde.

$

1 $, 2 $, 3 $ โ€ฆ. Enthรคlt die Werte des รผbereinstimmenden Musters der Reihe nach.

$[

Erster Index: Array, ein Teilstring.

$]

Eine Version von Perl.

$โ€œ

Das fรผr Listenelemente verwendete Trennzeichen ist standardmรครŸig ein Leerzeichen.

$;

Indextrennzeichen, das in mehrdimensionalen Arrays verwendet wird

$!

Im numerischen Kontext wird die Fehlernummer gedruckt. Geben Sie den Fehler im Zeichenfolgenkontext aus.

$@

Enthรคlt die Syntaxfehlerinformationen, die verwendet werden, wenn eval() verwendet wird.

$<

Enthรคlt die tatsรคchliche UID (Benutzer-ID) des Prozesses, der das Skript ausfรผhrt.

$>

Enthรคlt die effektive UID des Prozesses, der das Skript ausfรผhrt.

$(

Enthรคlt die tatsรคchliche GID (Gruppen-ID) des Prozesses, der das Skript ausfรผhrt.

$)

Enthรคlt die effektive GID des Prozesses, der das Skript ausfรผhrt.

$^D$DEBUGGING

Enthรคlt den aktuellen Wert der Debugging-Flags.

$^C

Hรคlt den aktuellen Wert des Flags, wenn der Befehlszeilenschalter โ€“c verwendet wird.

$^F

Der maximale Systemdateideskriptor ist standardmรครŸig auf 2 eingestellt

$^I$INPLACE_EDIT

Enthรคlt den Wert des Befehlszeilenschalters โ€“i.

$^M

Ein spezieller Speicherpool kann verwendet werden, wenn das Perl-Skript aufgrund eines Speichermangelfehlers abstรผrzt.

$^O$OSNAME

OperaDie Systeminformationen werden gespeichert. โ€žLinuxโ€œ fรผr Linux-Systeme, โ€žmswin32โ€œ fรผr Windows Systemen.

$^T$BASISZEIT

Die Zeit, in der die Skripte ausgefรผhrt werden, in Sekunden.

$^W$WARNUNG

Der aktuelle Wert des Befehlszeilenschalters โ€“w. Warnschalter.

$ARGV

Name der aktuellen Datei, wenn <> verwendet wird.

Spezielle Array-Variablen:

Variable Beschreibung

@INK

Enthรคlt eine Liste von Pfaden, in denen Perl-Bibliotheksmodule oder -Skripte durchsucht werden kรถnnen, wรคhrend das aktuelle Skript ausgefรผhrt wird. Dieses @INC wird von use- und require-Anweisungen verwendet, um diese Pfade nach Bibliotheksmodulen zu durchsuchen.

@ARGV

Speichert die รผbergebenen Befehlszeilenargumente.

@_

Wird in Unterprogrammen verwendet, wรคhrend die Parameter an die Unterprogramme รผbergeben werden.

@F

Dies ist das Array, in dem die Eingabezeilen gespeichert werden, wenn Auto Split โ€“a (Befehlszeilenschalter verwendet wird).

Spezielle Hash-Variablen:

Variable Beschreibung

%INKL

Der Dateiname wird der Schlรผssel sein; Werte sind der Pfad zu diesen Dateien. Wird von do, use und require verwendet.

%ENV

Systemumgebungsvariablen.

%SIG

Signals-Handler.

Regulรคrer Perl-Ausdruck

Was ist ein regulรคrer Ausdruck?

Der regulรคre Ausdruck in Perl ist stark genug, um die Zeichenfolgenmuster innerhalb einer Anweisung oder einer Gruppe von Anweisungen abzugleichen. Regulรคre Ausdrรผcke werden hauptsรคchlich bei der Textanalyse, beim Musterabgleich und je nach Bedarf bei vielem mehr verwendet. Wir haben bestimmte Operatoren, die speziell bei der Musterbindung regulรคrer Ausdrรผcke verwendet werden: =~ und !~. Dies sind Test- und Zuweisungsoperatoren.

Regulรคrer Ausdruck Operatoren

Regulรคrer Ausdruck Operatoren in Perl

Regulรคrer Ausdruck Operatoren in Perl

  • Perl-Match โ€“ m//
  • Perl-Ersatz โ€“ s///
  • Perl Transliterate โ€“ tr///

Bevor wir fortfahren, mรผssen wir einige Dinge รผber regulรคre Ausdrรผcke wissen; Es gibt bestimmte Dinge wie Metazeichen und Platzhalter in der Perl-Regex-Syntax.

Saibling Bedeutung

\

Sonderangebot oder Angebot

*

Entspricht 0 oder mehr Zeichen

+

Entspricht 1 oder mehr Zeichen

?

Entspricht 0 oder 1 Zeichen

|

Kann zum Anpassen alternativer Muster verwendet werden

()

Wird zum Speichern des รผbereinstimmenden Musters verwendet

[]

Es kรถnnen Zeichensรคtze รผbergeben werden. Wird speziell fรผr Zahlen und Alphabete verwendet.

{}

Wird verwendet, um anzugeben, wie oft das Spiel durchgefรผhrt werden kann.

^

Anfang der Zeichenfolge

$

Ende der Zeichenfolge

\w

Wird verwendet, um ein einzelnes Zeichen oder Wort abzugleichen, das alphanumerisch sein kann, einschlieรŸlich โ€ž_โ€œ.

\W

Entspricht etwas anderem als alphanumerischem Wert

\s

Wird zum Abgleichen von Leerzeichen verwendet

\S

Passen Sie alles andere als Leerzeichen an

\d

Zahlen abgleichen. Keine Dezimalwerte und keine negativen Werte

\D

Findet รœbereinstimmungen mit allem auรŸer Zahlen.

\t

Passen Sie den Tabulatorraum an

\n

Neue Zeile anpassen

Die oben genannten Zeichen sind die Zeichensรคtze, die beim Mustervergleich verwendet werden kรถnnen.

Sehen wir uns einige Beispiele an.

Stellen Sie sich eine Situation vor, in der der Benutzer wรคhrend der Skriptausfรผhrung eine Eingabe macht und wir prรผfen mรถchten, ob der Benutzer einen Namen als Eingabe eingegeben hat oder nicht. Wir mรผssen eine regulรคre Ausdruckssyntax schreiben, um Ihren Namen zu extrahieren und ihn auszugeben.

my $userinput="Guru99 Rocks";
if($userinput=~m/.*(Guru99).*/)
{
	print "Found Pattern";
}
else
{
	print "unable to find the pattern";
}

Ausgang:

Gefundenes Muster

Hier haben wir den regulรคren Ausdruck als /.*(Guru99).*/.* geschrieben, der mit allen Zeichen in einer Zeichenfolge รผbereinstimmt. A '.' In Perl bezieht sich die Regex-รœbereinstimmung auf jedes Zeichen, einschlieรŸlich Leerzeichen.

Lassen Sie uns sehen, wie genau wir einen Regex erstellen kรถnnen.

Betrachten Sie ein Beispiel fรผr eine Zeichenfolge aus mehreren Wรถrtern, Ziffern und Sonderzeichen wie โ€žHallo zusammen, das ist meine Nummer: +91-99298373639โ€œ;

Regex: /^\w+\s\w+\s\w+\s\w+\s\w+\s\w+\:\+\d+\-\d+/i

Wortraum Wortraum Wortraum Wortraum Wortraum Wortraum Sonderzeichen: Leerzeichen Sonderzeichen + Ziffern Sonderzeichen โ€“ Ziffern.

Perl-Match Operatoren

Die รœbereinstimmungsoperatoren werden verwendet, um eine Zeichenfolge innerhalb einer Anweisung oder einer Variablen abzugleichen.

my $var="Hello this is perl";
if($var=~m/perl/)
{
	print "true"; 
} 
else
{
	print "False"; 
}

Ausgang:

was immer dies auch sein sollte.

Dieser kleine Code gibt โ€žtrueโ€œ aus, da die Perl-Musterรผbereinstimmung die Zeichenfolge in einer Variablen identifiziert. Grundsรคtzlich sucht Perl in der gesamten Zeichenfolge nach dem in // angegebenen Text. Selbst wenn es ihn an einer Stelle findet, gibt es โ€žtrueโ€œ zurรผck. Das Muster kann รผberall in der Variablen vorkommen. Wir kรถnnen versuchen, =~ durch !~ zu ersetzen, um den Unterschied zwischen diesen beiden Operatoren zu sehen.

Perl-Ersetzung OperaDo.

Dieser Operator kann zum Suchen und Ersetzen beliebiger Zeichen durch Null oder ein anderes Zeichen verwendet werden.

my $a="Hello how are you";
$a=~s/hello/cello/gi;
print $a;

Ausgang:

Cello, wie geht es dir?

Hinweis: Wir kรถnnen tatsรคchlich jede beliebige Mustervergleichszeichenfolge verwenden, wie wir es auch zuvor in diesem Substitutionsoperator getan haben. Hier haben wir โ€žgiโ€œ, g-global und i-GroรŸ-/Kleinschreibung ignorieren verwendet.

Perl-รœbersetzung OperaDo.

Dies รคhnelt der Substitution, verwendet jedoch keine regulรคren Perl-Ausdrรผcke, sondern wir kรถnnen den Wert oder ein Wort, das wir ersetzen mรถchten, direkt รผbergeben.

my $a="Hello how are you";
$a=~tr/hello/cello/;
print $a;

Ausgang:

Hallo Kuh, bist du?

Perl-Datei-I/O

Perl wurde fรผr die effektive Bearbeitung von Dateien und E/A-Vorgรคngen entwickelt. Der Hauptvorteil von Perl liegt in der Dateianalyse und -verarbeitung. Bei der Dateiverarbeitung in Perl werden viele integrierte Funktionen und Operatoren verwendet.

Dateioperationen, die mit Perl ausgefรผhrt werden, werden grundsรคtzlich mit FILEHANDLE durchgefรผhrt. Wir mรผssen diesen FILEHANDLE beim ร–ffnen einer Datei zum Lesen oder Schreiben definieren.

In diesem Perl-Skript-Tutorial lernen Sie-

Perl-Datei รถffnen

Wir kรถnnen eine Datei mit der in Perl verfรผgbaren Funktion open() รถffnen.

open(FILEHANDLE, "filename or complete path of the file");

Jetzt haben wir eine Datei geรถffnet, nun stellt sich eine Frage. Ist es zum Lesen oder Schreiben?

Perl-Lesedatei und Perl-Schreibdatei

Perl verfรผgt รผber bestimmte Modi, die zum Lesen, Schreiben oder Anhรคngen einer Datei verwendet werden mรผssen.

Read โ€“ open(my $fh,"<filename or complete path of the file"); 
Write โ€“ open(my $fh,">filename or complete path of the file");
Append โ€“ open(my $fh,">>filename or complete path of the file");

Einige Beispiele zum Lesen einer Datei:

Datei in Perl lesen

Stellen Sie sich vor, wir haben eine Perl-Datei mit dem Namen file.txt, die nur wenige Textzeilen enthรคlt. Wir mรผssen diese Datei รถffnen und ausdrucken.

open(FH,"<file.txt"); 
while(<FH>)    # Looping the file contents using the FH as a filehandle. 
{
	print "$_";
}
close FH;

or

open(FH,"<file.txt"); 
my @content=<FH>; # specifying the input of the array is FH.
foreach(@content)
{
	print "$_";
}
close FH;

Dadurch wird der Dateiinhalt auf dem Ausgabebildschirm gedruckt.

Jetzt schreiben wir ein Programm zum Erstellen und Schreiben von Daten in eine Perl-Datei.

Datei in Perl schreiben

open(FH,">test.txt");
my $var=<>;
print FH $var;
close FH;

Dadurch werden die zur Laufzeit bereitgestellten Eingaben geschrieben und eine Datei test.txt erstellt, die Eingaben enthรคlt.

Bei der oben beschriebenen Methode wird immer versucht, eine Datei mit dem Namen test.txt zu erstellen und die Eingabe in die Datei zu schreiben. Wir werden dasselbe schreiben, um die Datei anzuhรคngen.

Dateianfรผgevorgang in Perl

open(FH,">>test.txt");
my $var=<>;
print FH $var;
close FH;
Modi Beschreibung

<

Lesen Sie mehr

+<

Liest und schreibt

>

Erstellt, schreibt und schneidet ab

+>

Lesen, schreiben, erstellen und abschneiden

>>

Schreibt, hรคngt an und erstellt

+>>

Lesen, schreiben, anhรคngen und erstellen

Jetzt mรผssen wir anhand einfacher Beispiele sehen, wie man Dateien liest, schreibt und anhรคngt.

Wir werden noch einige weitere Beispiele und andere Funktionen sehen, die zum besseren Verstรคndnis von Dateien beitragen.

Perl Tell

Diese Methode gibt die aktuelle Position von FILEHANDLER in Bytes zurรผck, wenn sie angegeben wird. Andernfalls wird die letzte Zeile als Position betrachtet.

open(FH, "test.pl");
while(<FH>)
{
	$a=tell FH;
	print "$a";
}

Perl-Suche

Die Seek-Funktion รคhnelt dem fseek-Systemaufruf. Diese Methode wird verwendet, um den Dateizeiger an einer bestimmten Stelle zu positionieren, indem die Bytes angegeben werden, denen entweder der Anfang des Dateizeigers oder das Ende des Dateizeigers folgt.

seek FH, bytes, WHENCE;

WHENCE ist die Position des Dateizeigers zum Starten. Null setzt es vom Anfang der Datei an.

Beispiel: Input.txt enthรคlt einige Daten wie โ€žHallo, das ist meine Welt.โ€œ

open FH, '+<','input.txt';
seek FH, 5, 0;    # This will start reading data after 5 bytes.
$/ = undef;
$out = <FH>;
print $out;
close FH;

Ausgang:

das ist meine Welt

Perl-Link aufheben

Mit Unlink wird die Datei gelรถscht.

unlink("filename or complete file path");

Umgang mit Verzeichnissen:

Wir kรถnnen auch Verzeichnisse verwalten, รผber die wir mehrere Dateien verwalten kรถnnen.

Mal sehen, wie man ein Verzeichnis รถffnet. Wir kรถnnen die Methoden opendir und readdir verwenden.

opendir(DIR,"C:\\Program Files\\"); #DIR is the directory handler.

while(readdir(DIR)) # loop through the output of readdir to print the directory contents.
{
   print "$_\n";
}
closedir(DIR); #used to close the directory handler.

or

opendir(DIR,"C:\\Program Files\\");
@content=readdir(DIR);
foreach(@content)
{
	print "$_\n";
}
closedir(DIR);

Dadurch werden alle verfรผgbaren Dateien in diesem Verzeichnis gedruckt.

Perl-Dateitests und ihre Bedeutung

-r

So prรผfen Sie, ob die Datei/das Verzeichnis fรผr den aktuellen Benutzer/die aktuelle Gruppe lesbar ist

-w

Um zu รผberprรผfen, ob die Datei/das Verzeichnis vom aktuellen Benutzer/der aktuellen Gruppe beschreibbar ist

-x

Um zu รผberprรผfen, ob die Datei/das Verzeichnis vom aktuellen Benutzer/der aktuellen Gruppe ausfรผhrbar ist

-o

Um zu รผberprรผfen, ob die Datei/das Verzeichnis dem aktuellen Benutzer gehรถrt

-R

Um zu prรผfen, ob die Datei/das Verzeichnis von diesem realen Benutzer/dieser realen Gruppe gelesen werden kann

-W

Um zu รผberprรผfen, ob die Datei/das Verzeichnis von diesem echten Benutzer/dieser echten Gruppe beschreibbar ist

-X

Um zu รผberprรผfen, ob die Datei/das Verzeichnis von diesem echten Benutzer/dieser echten Gruppe ausgefรผhrt werden kann

-O

Um zu รผberprรผfen, ob die Datei/das Verzeichnis diesem echten Benutzer gehรถrt

-e

Um zu รผberprรผfen, ob der Datei-/Verzeichnisname vorhanden ist

-z

Um zu รผberprรผfen, ob die Datei vorhanden ist und die GrรถรŸe Null hat (bei Verzeichnissen immer โ€žfalseโ€œ)

-f

Um zu รผberprรผfen, ob Entry eine einfache Datei ist

-d

Um zu รผberprรผfen, ob Eintrag ein Verzeichnis ist

-l

Um zu prรผfen, ob der Eintrag ein symbolischer Link ist

-S

Um zu รผberprรผfen, ob Entry ein Socket ist

-p

Um zu รผberprรผfen, ob Entry eine Named Pipe (ein โ€žFIFOโ€œ) ist

-b

Um zu รผberprรผfen, ob Entry eine Block-Spezialdatei ist (z. B. eine bereitstellbare Festplatte)

-c

So รผberprรผfen Sie, ob Entry eine spezielle Zeichendatei ist (wie ein E/A-Gerรคt)

-u

Um zu รผberprรผfen, ob die Datei oder das Verzeichnis setuid ist

-g

Um zu รผberprรผfen, ob die Datei oder das Verzeichnis setgid ist

-k

Um zu รผberprรผfen, ob in der Datei oder im Verzeichnis das Sticky-Bit gesetzt ist

-t

Das angegebene Dateihandle ist ein TTY (wie bei der Systemfunktion isatty() kรถnnen Dateinamen mit diesem Test nicht getestet werden)

-T

Um zu รผberprรผfen, ob die Datei wie eine โ€žTextโ€œ-Datei aussieht

-B

Um zu รผberprรผfen, ob die Datei wie eine โ€žBinรคrdateiโ€œ aussieht

-M

Zur รœberprรผfung des ร„nderungsalters (gemessen in Tagen) der Datei

-A

Zur รœberprรผfung des Zugriffsalters (gemessen in Tagen) der Datei

-C

Zur รœberprรผfung des Inode-ร„nderungsalters (gemessen in Tagen) der Datei

Perl-Subroutine

Was ist ein Unterprogramm?

Unterprogramme รคhneln Funktionen in anderen Programmiersprachen. Wir haben bereits einige integrierte Funktionen wie Print, Chomp, Chop usw. verwendet. Wir kรถnnen unsere eigenen Unterroutinen in Perl schreiben. Diese Unterprogramme kรถnnen an einer beliebigen Stelle im Programm geschrieben werden; Es ist vorzuziehen, die Unterprogramme entweder am Anfang oder am Ende des Codes zu platzieren.

Unterprogramm in PERL

Beispiel fรผr Unterprogramme

sub subroutine_name 
{
	Statementsโ€ฆ;    # this is how typical subroutines look like.
}

Nachdem wir nun wissen, wie man eine Unterroutine schreibt, wie greifen wir darauf zu?

Wir mรผssen auf eine Unterroutine zugreifen oder diese aufrufen, indem wir den Namen der Unterroutine mit dem Prรคfix โ€ž&โ€œ verwenden.

sub display
{
	print "this is a subroutine";
}
display();    # This is how we call a subroutine

รœbergabe von Perl-Parametern und Perl-Argumenten

Unterprogramme oder Perl-Funktionen werden geschrieben, um den wiederverwendbaren Code darin zu platzieren. Der grรถรŸte Teil des wiederverwendbaren Codes erfordert die รœbergabe von Parametern an die Unterroutine. Hier erfahren wir, wie wir Argumente an die Unterroutine รผbergeben kรถnnen.

sub display
{		
	my $var=@_; # @_ is a special variable which stores the list of arguments passed.		
	print "$var is the value passed";		
}		
display(2,3,4);    #this is how we need to pass the arguments.

Ausgang:

3 ist der รผbergebene Wert

@_ ist eine spezielle Array-Variable, die die an die Unterroutinen รผbergebenen Argumente speichert.

Perl Shift

Wir kรถnnen auch das Schlรผsselwort โ€žshiftโ€œ verwenden, das jeweils einen Parameter in eine Variable verschiebt, oder $_[0],$_[1]โ€ฆ, was ein einzelnes Element des @_-Arrays ist

sub display
{		
my $var=shift;		
print "$var is passed";		
}		
display("hello");

Ausgang:

hallo ist bestanden

Unterroutinen werden typischerweise in der objektorientierten Programmierung und auch an Stellen verwendet, an denen mรถglicherweise mehr wiederverwendbarer Code platziert werden muss.

Die Hauptfunktion von Unterprogrammen besteht darin, eine Aufgabe auszufรผhren und das Ergebnis des wiederverwendbaren Codes zurรผckzugeben.

PERL-Tutorial fรผr Anfรคnger โ€“ Komplette Anleitung

Mit dem Schlรผsselwort return kรถnnen wir einen Wert aus einer Unterroutine zurรผckgeben.

sub add
{
my $a=shift;
my $b=shift;
return($a+$b);
}
my $result=add(5,6);
print $result;

Ausgang:

11

$result enthรคlt den Wert der addierten Werte $a und $b.

Wir kรถnnen Hashes und Arrays auch direkt an die Unterroutine รผbergeben.

sub hash
{
my %hash=@_;
print %hash;
}
%value= ( 1=>'a', 2=>'b');
&hash(%value);

Ausgang:

1a2b

Wir kรถnnen auch einen Hash oder ein Array zurรผckgeben.

sub hashArray
{
my %hash=@_;
print "Inside Sub-routine";
print %hash;
return(%hash);
}
%hash=(1=>'a', 2=>'b');
my(@ret)=hashArray(%hash);
print "After Sub-routine call";
print @ret;

Ausgang:

Innerhalb der Subroutine2b1aNach dem Aufruf der Subroutine2b1a

Perl-Format

Perl verfรผgt รผber einen Mechanismus, mit dem wir Berichte erstellen kรถnnen. Mit dieser Funktion kรถnnen wir Berichte genau nach Wunsch erstellen und auf dem Ausgabebildschirm oder in einer Datei ausdrucken. Ein einfaches Format kann mit den in Perl verfรผgbaren Funktionen printf oder sprintf geschrieben werden.

printf "%05d\n", 30;

Dabei werden vor der Zahl 30 fรผhrende Nullen eingefรผgt, sodass die Gesamtzahl der Ziffern 5 betrรคgt. Dasselbe kann fรผr sprintf verwendet werden.

sprintf "%05d\n", 30; # This will print the same as printf.

Mit printf und sprintf kรถnnen wir die meisten Perl-Formate erhalten. Bei Berichten wird die Implementierung schwierig sein.

Perl-Format

Beispiel eines Berichts:

================================================== ============================
Name Adresse Alter Telefon
================================================== ============================
Krishna Chennai 24 929309242
Shruthi Chennai 24 929309232

Oben ist ein Beispielbericht, den wir in Perl auf die gleiche Weise drucken mรผssen. Dies kann durch die Verwendung von Perl printf und Perl sprintf erreicht werden. Es kann effektiv durch die Verwendung von format implementiert werden.

Ein Format kann auf die folgende Weise deklariert werden.

format FORMATNAME=FORMATLIST.

Hier verwenden wir eine bestimmte Schreibmethode, um die Daten auf dem Ausgabebildschirm oder in der Datei zu drucken.

Symbol Beschreibung

@

Wird verwendet, um den Beginn des Feldhalters darzustellen

>

Richtige Ausrichtung des Textes

<

Linksausrichtung des Textes

|

Zentrierung

#

Numerisch, wenn mehrere # angegeben werden. Wird als Kommentar angenommen, wenn ein einzelnes # angegeben wird

.

Komma

^

Der Feldanfangshalter kann auch fรผr mehrzeilige Zeilen und auch fรผr den Zeilenumbruch verwendet werden

~

Die Zeile sollte leer sein, wenn die Variable leer ist

@*

Mehrere Zeilen.

($name,$addr,$age,$phone)=("krishna","chennai","24","929309242"); 
write;
($name,$addr,$age,$phone)=("shruthi","chennai","24","929309232"); 
write; 
format STDOUT_TOP= 
=============================================================== 
NAME ADDRESS AGE PHONE 
===============================================================
 . 
format STDOUT= 
@<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<< @<<< @<<<<<<<<<< 
$name, $addr, $age, $phone 
.

Fรผhren Sie den Code aus, um die Ausgabe anzuzeigen.

Wir verwenden das @-Symbol, um den Anfang des Feldhalters oder der Zeichenfolge anzugeben, โ€ž<โ€œ jedes Zeichen.

Wir verwenden STDOUT zum Drucken auf der Standardausgabe. Wir kรถnnen dies in einen Dateihandler รคndern, den wir zum Schreiben von Daten in die Datei verwenden.

open(REPORT,">test.txt"); 
($name,$addr,$age,$phone)=("krishna","chennai","24","929309232"); 
write REPORT; 
($name,$addr,$age,$phone)=("shruthi","chennai","24","929309232"); 
write REPORT; 
format REPORT_TOP= 
=============================================================== 
NAME ADDRESS AGE PHONE 
===============================================================
 . 
format REPORT= 
@<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<< @<<< @<<<<<<<<<< 
$name, $addr, $age, $phone

Wir kรถnnen โ€ž<โ€œ durch โ€ž>โ€œ oder โ€ž|โ€œ ersetzen. um die Ausrichtung des Textes zu รคndern. STDOUT_TOP wird verwendet, um den Header des Formats zu entwerfen. Wir kรถnnen dasselbe auch mit dem Dateihandler verwenden, indem wir FH_TOP verwenden (FH ist der Dateihandler). Dadurch wird das Format in die Datei ausgegeben, an der wir arbeiten An.

Perl-Codierungsstandards

Jeder Programmierer hat seine eigene Vorstellung davon, wie er den Code unter Verwendung bestimmter Standards schreibt. Diese Standards sollten so vertraut sein, dass andere Programmierer den Code verstehen und richtig unterstรผtzen kรถnnen.

Codierungsstandards in Perl

Codierungsstandards in Perl

Das Schreiben von Code ist einfach und unkompliziert. Das Problem entsteht, wenn er in spรคteren Phasen gewartet werden muss. Beim Schreiben des Codes mรผssen die richtigen Richtlinien und Codierungsstandards befolgt werden. Perl definiert auch bestimmte Standards, die fรผr Programmierer beim Schreiben von Code hilfreich sind. Es ist ratsam, beim Schreiben des Codes die Module โ€žStrictโ€œ und โ€žWarningsโ€œ zu laden. Jedes dieser Module hat seine eigene Bedeutung. Strict lรคsst uns die Variable vor der Verwendung deklarieren und sagt uns auch, ob in Ihrem Code ein leeres Wort vorhanden ist. Das Warnings-Modul kann alternativ verwendet werden, indem die Option โ€ž-wโ€œ an den Perl-Interpreter in Shebang รผbergeben wird. Warnungen werden auf dem Ausgabebildschirm gedruckt.

#!/usr/bin/perl โ€“w

Nachfolgend finden Sie einige Listen mit Standards.

  • Verwenden Sie die Module โ€žstrengโ€œ und โ€žWarnungenโ€œ.
  • Entfernen Sie die Variable, die nicht verwendet wird.
  • Variablennamen sollten fรผr andere Benutzer verstรคndlich sein. Beispiel: $name, @fileData usw.
  • Beim Codieren eines Skripts ist eine Dokumentation erforderlich.
  • Codieren Sie keine Werte fest, sondern versuchen Sie, diese dynamisch abzurufen oder den Benutzer wรคhrend der Laufzeit zur Eingabe aufzufordern (Dateipfad, Dateinamen).
  • Maximieren Sie die Wiederverwendung von Code. Versuchen Sie, den wiederverwendbaren Code in Unterroutinen einzufรผgen.
  • Das bedeutet, dass fรผr Unterprogramme vollstรคndige Namen angegeben werden sollten.
  • Unterprogramme mรผssen mit entsprechenden Kommentaren und Dokumentation geschrieben werden.
  • Variablen immer initialisieren.
  • รœberprรผfen Sie immer die Rรผckkehrcodes fรผr Systemaufrufe. Das ร–ffnen einer Datei kann erfolgen oder auch nicht. Wenn hier ein Rรผckkehrcode vorhanden ist, wird der Fehlerstatus angezeigt, wenn die Datei nicht vorhanden ist.

    Beispiel: open(FH,

  • Unterroutine sollte immer einen Wert zurรผckgeben.
  • ร–ffnen Sie die Locken in derselben Linie.
  • Einzeiliger BLOCK kann mit Curly in einer einzigen Zeile platziert werden.
  • Verwenden Sie Beschriftungen wรคhrend der LOOPS, damit Sie die Schleife jederzeit verlassen kรถnnen, wenn dies erforderlich ist.
  • Verwenden Sie Unterstriche, wenn lange Wortphrasen als Variablennamen oder Unterprogramme geschrieben werden.
  • Versuchen Sie, beim Codieren einfachen regulรคren Ausdruck zu verwenden.

Perfektes Beispiel mit Codierungsstandards:

#######################################################################
Program to read the file content
# Date: 22-2-2013
# Author : Guru99
########################################################################
#!/usr/bin/perl 
use strict;
use warnings; 
my $line;
open FR, "file.txt" || die("Cannot open the file $!");
while ($line=<FR>) 
{   
	print $line;
} # Looping file handler to print data

Perl-Fehlerbehandlung

Was ist eine Ausnahme?

Eine Ausnahme ist ein Ereignis, das wรคhrend der Programmausfรผhrung auftritt und Ihr Programm anhรคlt oder beendet.

Fehlerbehandlung

Jeder Programmierer muss beim Programmieren auf die Fehlerbehandlung achten. Perl bietet auch Fehlerbehandlungstechniken, mit denen wir den Fehler abfangen und entsprechend behandeln kรถnnen.

Fehlerbehandlung in Perl

Fehlerbehandlung in Perl

Es gibt viele Mรถglichkeiten, das Programm auf Fehler zu รผberprรผfen. Wir mรผssen die Rรผckkehrcodes der Funktion untersuchen, deren Code wir verwenden. Wenn wir in der Lage sind, diese Rรผckkehrcodes ordnungsgemรครŸ zu verarbeiten, kรถnnen die meisten Fehler behandelt werden.

Was wird bei Systemaufrufen zurรผckgegeben?

Bei Systemaufrufen wird der Rรผckgabestatus in zwei speziellen Variablen gespeichert: $? Und $!

$! โ€“ Dadurch wird die mit der Fehlermeldung verknรผpfte Fehlernummer oder Fehlernummer erfasst.

$? โ€“ Hier wird die Funktion โ€žRรผckgabestatus system()โ€œ gespeichert.

Perl-Operator oder Logical verwenden

Wir kรถnnen den logischen โ€žOderโ€œ-Operator zur Fehlerbehandlung bei Systemaufrufen verwenden.

Ex:

open(FH,"<test.txt");

Dadurch wird die Datei im Lesemodus geรถffnet, sofern die Datei vorhanden ist.

Was passiert, wenn die Datei fehlt?

open(FH,"<test.txt") or die("File not exists $!"); # This will perl exit the program if the file not exists. 
open(FH,"<test.txt") or warn ("File not exists $!"); # This will print a warning message on STDERR

Perl-Evaluierung

Die Eval-Funktion kann schwerwiegende Fehler, Fehler bei der Kompilierung, Laufzeitfehler und solche Fehler behandeln, die Ihren Code irgendwann beenden.

Die Perl-Eval-Funktion kann einen Codeblock oder einen Ausdruck enthalten. Evals betrachtet alles, was darin platziert wird, als Zeichenfolge.

Stellen Sie sich eine Situation vor, in der ein Unterprogramm aufgerufen wird, das nicht im Skript definiert ist. In dieser Situation endet das Skript mit der Meldung โ€žundefinierte Unterroutine &XYZ, dieser Fehler kann in der Auswertungsfunktion behandelt werden.โ€œ

Es gibt viele Verwendungsmรถglichkeiten fรผr den Evals-Blรถck. Eine solche Verwendung besteht beispielsweise darin, dass wir wรคhrend der Laufzeit das betriebssystemspezifische Modul laden mรถchten.

Beispiel: Eine Division durch Null fรผhrt zu einem schwerwiegenden Fehler. Um dies zu handhaben, kรถnnen wir den Code im Evals-Block platzieren.

$a=5; 
$b=0; 
eval 
{ 
 '$result=$a/$b'; 
} 
if($@)
{
 print "$@";    # All the error codes returned by evals will get stored in $@. 
}

Ausgang:

Syntaxfehler in C:\Users\XYZ\Text.pl Zeile 8, in der Nรคhe von โ€ž)

{โ€œ

Die Ausfรผhrung von C:\Users\XYZ\Text.pl wurde aufgrund von Kompilierungsfehlern abgebrochen.

Beispiel: Auswertung mit der Perl-Anweisung โ€žDieโ€œ.

sub test 
{ 
die "Dieing in sub test \n"; 
} 
eval 
{ 
test(); 
}; 
print "Caught : $@\n";

Ausgang:

Gefangen: Im Untertest gestorben

Versuchen Sie es mit Perl

Perl unterstรผtzt Try-, Catch- und Finally-Codeblรถcke nicht wie andere Programmiersprachen. Wir kรถnnen sie weiterhin verwenden, indem wir ein externes Perl-Modul laden.

verwenden Sie Try::Tiny;

Auf diese Weise kรถnnen wir Ihren Code im Try-Block platzieren und den Fehler im Warnblock abfangen.

Anstelle von $@, das in eval verwendet wird, verwendet Try::Tiny $_.

# Fehler mit einem Catch-Handler behandeln

try 
{ 
die "Die now"; 
} 
catch 
{ 
warn "caught error: $_"; # not $@ 
};

Endlich verwenden.

my $y;
try 
{ 
 die 'foo' 
}
finally 
{ 
    $y = 'bar' 
};

try 
{ 
    die 'Die now' 
} 
catch 
{ 
    warn "Returned from die: $_" 
} 
finally 
{ 
    $y = 'gone' 
};

Ausgang:

foo unter C:\Users\XYZ\Text.pl Zeile 4.

Auf diese Weise kรถnnen wir โ€žtryโ€œ, โ€žcatchโ€œ und โ€žfinallyโ€œ verwenden.

Versuchen Sie es mit { # Anweisung }

Catch {# Anweisung }

schlieรŸlich { # Anweisung };

Or

try 
{ 
# statement 
} 
finally 
{ 
# statement 
};

Ausgang:

Or

try 
{ 
# statement 
} 
finally 
{ 
# statement 
} 
catch 
{ 
# statement 
};

Ausgang:

Perl-Socket-Programmierung

Was ist eine Steckdose?

PERL-Tutorial fรผr Anfรคnger โ€“ Komplette Anleitung

Der Socket ist ein Medium, รผber das zwei Computer in einem Netzwerk interagieren kรถnnen, indem sie Netzwerkadressen und Ports verwenden.

Angenommen, A (Server) und B (Client) sind zwei Systeme, die รผber Sockets zum Ausfรผhren einiger Programme miteinander interagieren mรผssen.

Um dies zu implementieren, mรผssen wir Sockets sowohl in A (Server) als auch in B (Client) erstellen. A befindet sich im Empfangsstatus und B im Sendestatus.

Ein Server):

Hier mรถchte der Server eine Verbindung von B (Client) empfangen, einige Aufgaben ausfรผhren und das Ergebnis an B (Client) zurรผcksenden. Wenn wir den Code ausfรผhren, versucht das Betriebssystem in A, einen Socket zu erstellen und bindet einen Port an diesen Socket. Dann lauscht es vom Absender, also B.

B (Kunde).

Hier mรถchte der Client ein Programm von seinem System zur Verarbeitung an A (Server) senden. Wenn wir den Code ausfรผhren, versucht das Betriebssystem in B, einen Socket fรผr die Kommunikation mit A (Server) zu erstellen. B muss die IP-Adresse und die Portnummer von A angeben, mit dem B eine Verbindung herstellen mรถchte.

Wenn dies gut verlรคuft, werden beide Systeme interagieren, um die Informationen รผber einen Port auszutauschen. Perl unterstรผtzt auch Socket-Programmierung.

Perl verfรผgt รผber eine native API, รผber die Sockets implementiert werden kรถnnen. Der Einfachheit halber gibt es viele CPAN-Module, mit denen wir Socket-Programme schreiben.

Serverbetrieb:

  • Socket erstellen
  • Binden Sie den Socket mit Adresse und Port
  • Hรถren Sie auf den Socket an dieser Portadresse
  • Akzeptieren Sie die Client-Verbindungen, die versuchen, eine Verbindung รผber den Port und die IP des Servers herzustellen
  • Vorgรคnge ausfรผhren

Kunden Operanationen:

  • Socket erstellen
  • Stellen Sie รผber seine Portadresse eine Verbindung zum Server her
  • Vorgรคnge ausfรผhren

Client-Server Operationen in Perl

socket.io

Dies ist ein Modul fรผr die Socket-Programmierung, das auf objektorientierter Programmierung basiert. Dieses Modul unterstรผtzt nicht den in Netzwerken verwendeten INET-Netzwerktyp.

IO::Socket::INET:

Dieses Modul unterstรผtzt die INET-Domรคne und basiert auf IO::Sockets. Alle in IO::Sockets verfรผgbaren Methoden werden im INET-Modul geerbt.

Client und Server verwenden das TCP-Protokoll:

TCP ist ein verbindungsorientiertes Protokoll; Wir werden dieses Protokoll fรผr die Socket-Programmierung verwenden.

Bevor wir fortfahren, sehen wir uns an, wie wir ein Objekt fรผr das Modul IO::Socket::INET und einen Socket erstellen kรถnnen.

$socket = IO::Socket::INET->new(PeerPort => 45787, 
PeerAddr => inet_ntoa(INADDR_BROADCAST), 
Proto => udp,LocalAddr => 
'localhost',Broadcast => 1 )
or 
die "Can't create socket and bind it : $@n";

Die neue Methode im Modul IO::Socket::INET akzeptiert einen Hash als Eingabeparameter fรผr die Unterroutine. Dieser Hash ist vordefiniert und wir mรผssen lediglich die Werte fรผr die Schlรผssel bereitstellen, die wir verwenden mรถchten. Es gibt eine Liste der von diesem Hash verwendeten Schlรผssel.

PeerAddr

Remote-Hostadresse

PeerHost

Synonym fรผr PeerAddr

PeerPort

Remote-Port oder -Dienst

LocalAddr

Bindungsadresse des lokalen Hosts

Localhost

Synonym fรผr LocalAddr

LocalPort

Lokaler Host-Bind-Port

Proto

Protokollname (oder Nummer)

Typ

EinfaรŸungsart

Zuhรถren

WarteschlangengrรถรŸe zum Abhรถren

ReuseAddr

Legen Sie SO_REUSEADDR vor der Bindung fest

Wiederverwendung:

Legen Sie SO_REUSEADDR vor der Bindung fest

ReusePort

Legen Sie SO_REUSEPORT vor dem Binden fest

Broadcast

Legen Sie SO_BROADCAST vor der Bindung fest

Timeout

Timeout-Wert fรผr verschiedene Vorgรคnge

MultiHomed

Probieren Sie alle Adressen fรผr mehrfach vernetzte Hosts aus

Blockierung

Bestimmen Sie, ob sich die Verbindung im Blockierungsmodus befindet

Server.pl

use IO::Socket; 
use strict; 
use warnings; 
my $socket = new IO::Socket::INET ( 
LocalHost => 'localhost', 
LocalPort => '45655', 
Proto => 'tcp', 
Listen => 1, 
Reuse => 1, 
); 
die "Could not create socket: $!n" unless $socket; 
print "Waiting for the client to send datan"; 
my $new_socket = $socket->accept(); 
while(<$new_socket>) { 
print $_; 
} 
close($socket);

Client.pl

use strict; 
use warnings; 
use IO::Socket; 
my $socket = new IO::Socket::INET ( 
PeerAddr => 'localhost', 
PeerPort => '45655', 
Proto => 'tcp', 
); 
die "Could not create socket: $!n" unless $socket; 
print $socket "Hello this is socket connection!n"; 
close($socket);

Hinweis:

Bei der Socket-Programmierung mรผssen wir zuerst Server.pl und dann client.pl einzeln in verschiedenen Eingabeaufforderungen ausfรผhren, wenn wir auf einem lokalen Host arbeiten.

Was sind Perl-Module und -Pakete?

Module und Pakete sind eng miteinander verbunden und unabhรคngig. Paket: Ein Perl-Paket wird auch als Namespace bezeichnet und enthรคlt alle verwendeten eindeutigen Variablen wie Hashes, Arrays, Skalare und Unterroutinen. Modul: Modul ist eine Sammlung wiederverwendbaren Codes, in den wir Unterroutinen schreiben. Diese Module kรถnnen in Perl-Programme geladen werden, um die in diesen Modulen geschriebenen Unterroutinen zu nutzen.

Was sind Perl-Module?

Standardmodule werden bei der Installation von Perl auf jedem System installiert. CPAN: Umfassendes Perl Archive Network โ€“ Ein globales Repository von Perl-Modulen. Unsere eigenen maรŸgeschneiderten Perl-Module, die von uns geschrieben werden kรถnnen. Grundsรคtzlich exportiert ein Modul, wenn es in ein beliebiges Skript geladen wird, alle seine globalen Variablen und Unterroutinen. Diese Unterprogramme kรถnnen direkt aufgerufen werden, als ob sie im Skript selbst deklariert wรคren. Perl-Module kรถnnen mit der Erweiterung .pm des Dateinamens geschrieben werden, z. B. Foo.pm. Ein Modul kann geschrieben werden, indem man โ€žpackage Fooโ€œ am Anfang des Programms verwendet.

Grundlegendes Perl-Modul:

#!/usr/bin/perl 
package Arithmetic; 
sub add 
{ 
my $a=$_[0]; 
my $b=$_[1]; 
return ($a+$b);
} 
sub subtract 
{ 
my $a=$_[0]; 
my $b=$_[1]; 
return ($a-$b); 
} 
1;

Keine Leistung

Um dieses Perl-Modul verwenden zu kรถnnen, mรผssen wir es im aktuellen Arbeitsverzeichnis ablegen.

Wir kรถnnen ein Perl-Modul mit โ€žrequireโ€œ oder โ€žuseโ€œ an einer beliebigen Stelle im Code laden. Der Hauptunterschied zwischen โ€žrequireโ€œ und โ€žuseโ€œ besteht darin, dass das geladene Modul zur Laufzeit erforderlich ist und das Laden wรคhrend der Kompilierungszeit verwendet wird.

#!/usr/bin/perl
require
Arithmetic;
print Arithmetic::add(5,6);
print Arithmetic:: subtract (5,6);

Hier, im obigen Beispiel, greifen wir รผber den vollstรคndig qualifizierten Modulnamen auf die Unterroutinen zu.

Wir kรถnnen auch รผber โ€žuse Arithmeticโ€œ auf das Paket zugreifen.

Exporteur:

Dieses Modul verfรผgt รผber eine Standardfunktion zum Importieren von Methoden.

#!/usr/bin/perl 
package Arithmetic; 
require Exporter; 
@ISA= qw(Exporter); # This is basically for implementing inheritance. 
@EXPORT = qw(add); 
@EXPORT_OK = qw(subtract); 
sub add 
{ 
my $a=$_[0]; 
my $b=$_[1]; 
return ($a+$b); 
} 
sub subtract 
{ 
my $a=$_[0]; 
my $b=$_[1]; 
return ($a-$b);
 } 
1;

Das @EXPORT-Array kann verwendet werden, um eine Liste von Variablen und Unterprogrammen zu รผbergeben, die standardmรครŸig an den Aufrufer des Moduls exportiert werden.

Das @EXPORT_OK-Array kann verwendet werden, um eine Liste von Variablen und Unterprogrammen zu รผbergeben, die bei Bedarf exportiert werden, wobei der Benutzer beim Laden des Moduls angeben muss.

#!/usr/bin/perl 
use 
Arithmetic qw(subtract); 
print add(5,6); 
print subtract (5,6);

StandardmรครŸig wird das Hinzufรผgen einer Unterroutine exportiert. Die Subtraktionsmethode wird nicht exportiert, wenn sie beim Laden des Moduls nicht angegeben wird.

Objektorientierte Programmierung in Perl

In diesem Abschnitt erfahren Sie, wie Sie objektorientierte Perl-Module erstellen. Schauen wir uns zunรคchst an, was das Objekt ist. Ein Objekt ist eine Instanz, mit der wir auf einige Daten in jedem Perl-Modul zugreifen, diese รคndern und lokalisieren kรถnnen. Dabei geht es um nichts anderes, als Ihr vorhandenes Perl-Paket, Ihre Variablen und Unterroutinen so zu gestalten, dass sie sich in Bezug auf andere Programmiersprachen wie Klassen, Objekte und Methoden verhalten.

Klasse erstellen

Wie man Module erstellt, wissen wir bereits aus dem vorherigen Thema. Der Zweck der Klasse besteht darin, Methoden und Variablen zu speichern. Ein Perl-Modul verfรผgt รผber Unterroutinen, die Methoden sind. Wir mรผssen auf diese Variablen und Unterprogrammobjekte zugreifen.

Perl-Konstruktor

Ein Konstruktor in Perl ist eine Methode, die eine Referenz ausfรผhrt und uns zurรผckgibt, wobei der Modulname mit der Referenz markiert ist. Dies nennt man Segen fรผr die Klasse. Wir verwenden eine bestimmte Variable, um eine Perl-Klasse zu segnen, nรคmlich bless.

#!/usr/bin/perl 
package Arithmetic; 
sub new 
{ 
my $class=shift;
my $self={}; 
bless $self, $class; 
return $self; 
} 
sub add 
{ 
my $self= shift; 
my $a=$_[0]; 
my $b=$_[1]; 
return ($a+$b); 
}
sub subtract 
{ 
my $self= shift; 
my $a=$_[0]; 
my $b=$_[1]; 
return ($a-$b); 
} 
1;

Die neue Methode, die als Konstruktor fรผr eine Klasse verwendet wird. Dieser Konstruktor erstellt ein Objekt fรผr uns und kehrt zu dem Skript zurรผck, das diesen Konstruktor aufruft.

#!/usr/bin/perl
use Arithmetic;
my $obj= Arithmetic->new(); 
my $result= $obj->add(5,6); 
print "$result";
$result = $obj->subtract(6,5);
print "$result";

Hier mรผssen wir verstehen, wie das Objekt erstellt wurde. Immer wenn wir versuchen, ein Objekt fรผr die Klasse zu erstellen, mรผssen wir den vollstรคndigen Namen der Klasse verwenden. Angenommen, die Perl-Klasse befindet sich in einer lib\Math\Arithmetic.pm. Und wenn wir รผber das lib-Verzeichnis auf diese Perl-Klasse zugreifen mรถchten, mรผssen wir beim Aufruf des Skripts den gesamten Pfad zur Klasse angeben.

benutze lib::Math::Arithmetic;

my $obj = lib::Math::Arithmetic->new();

So erfolgt die Objekterstellung in Perl.

@INC:

Woher weiรŸ das Perl-Skript, wo das Bibliotheksmodul vorhanden ist? Perl kennt nur das aktuelle Verzeichnis des Skripts und den in Perl integrierten Bibliothekspfad. Immer wenn wir ein Perl-Modul verwenden, das sich nicht im aktuellen Verzeichnis oder Perl-Bibliothekspfad befindet, schlรคgt das Skript immer fehl. รœber @INC ist dies ein Array, das alle Verzeichnispfade enthรคlt, in denen nach den Perl-Modulen gesucht werden muss. Versuchen Sie, diesen Befehl auszufรผhren und sehen Sie, was ausgegeben wird.

perl โ€“e "print @INC"

Dadurch wird eine Ausgabe ausgegeben, und das ist der Pfad, in dem die lib-Module verfรผgbar sein werden. Immer wenn wir ein neues Bibliotheksmodul verwenden, mรผssen wir Perl, den Interpreter, anweisen, nach dem bestimmten Speicherort zu suchen, an dem das Perl-Modul verfรผgbar ist.

push(@INC, "PATH TO YOUR MODULE");

Machen Sie dies als Ihre erste Codezeile. Dadurch wird Ihr Dolmetscher angewiesen, diesen Pfad zu untersuchen. oder -

lib Arithmetic; # List here is your Perl Module location

Perl-Destruktor

Der Destruktor eines Objekts wird standardmรครŸig am Ende und vor dem Beenden Ihres Skripts aufgerufen. Dies wird verwendet, um Ihre Objekte aus dem Speicher zu zerstรถren.


PERL V/s Shell-Scripting

Einfรผhrung in die PERL-Programmierung

  • Die Programmierung in Perl verursacht keine Portabilitรคtsprobleme, die hรคufig auftreten, wenn beim Shell-Scripting verschiedene Shells verwendet werden.
  • Die Fehlerbehandlung ist in Perl sehr einfach
  • Aufgrund der enormen Komplexitรคt von Perl kรถnnen Sie problemlos lange und komplexe Programme schreiben. Im Gegensatz dazu unterstรผtzt Shell keine Namespaces, Module, Objekte, Vererbung usw.
  • Shell verfรผgt รผber weniger wiederverwendbare Bibliotheken. Nichts im Vergleich zu Perls CPAN
  • Shell ist weniger sicher. Es ruft externe Funktionen auf (Befehle wie mv, cp usw. hรคngen von der verwendeten Shell ab). Im Gegenteil, Perl leistet nรผtzliche Arbeit, indem es interne Funktionen verwendet.

Wie PERL beim Automatisierungstest verwendet wird

Perl wird hรคufig in der Automatisierung eingesetzt. Es ist vielleicht nicht die beste Programmiersprache der Welt, aber fรผr bestimmte Arten von Aufgaben ist sie am besten geeignet. Lassen Sie uns besprechen, wo und warum Perl verwendet wird Automatisierungstests.

Speichertests

Speichertests mit Perl

Was ist Speicher? In Dateien gespeicherte Daten.

Angenommen, wir haben etwas mit dem Speicher zu tun Testfall Dabei mรผssen wir Daten auf eine Partition schreiben, sie lesen und รผberprรผfen, ob die Daten korrekt geschrieben wurden.

Dies kann manuell durchgefรผhrt werden, aber kann ein manueller Tester das Gleiche 10000 Mal durchfรผhren? Es wird ein Albtraum sein! Wir brauchen Automatisierung

Das beste Tool zur Automatisierung von allem, was mit Speicherung zu tun hat, ist Perl aufgrund seiner Dateihandhabungstechniken, REGEX und leistungsstarke Dateianalyse, die im Vergleich zu anderen Programmiersprachen die geringste Ausfรผhrungszeit benรถtigt.

Warum mรผssen wir den Speicher testen? Denken Sie an groรŸe Rechenzentren, in denen Daten kontinuierlich von einem System zum anderen flieรŸen und Tausende von Datensรคtzen pro Sekunde gespeichert werden. Das Testen der Robustheit eines solchen Speichermechanismus ist unerlรคsslich.

Viele Unternehmen wie HP, Dell, IBM und viele Serverhersteller verwenden Perl als Schnittstelle zum Testen der Funktionalitรคt in Speicher- und Netzwerkdomรคnen. NetApp ist ein solches Unternehmen, das sich ausschlieรŸlich mit Speicher beschรคftigt und Perl als Programmiersprache zur Automatisierung der Testfรคlle verwendet.

Wenn Sie sich fรผr Perl-Automatisierung interessieren, ist es ratsam, sich รผber Speicher und Netzwerke zu informieren Concepts.

Server- und Netzwerktests:

Server- und Netzwerktests mit Perl

Server- und Netzwerktests mit Perl

PERL wird hรคufig zur รœberwachung der Serververfรผgbarkeit und -leistung verwendet.

Stellen Sie sich ein Rechenzentrum mit 100 Hosts (Servern) vor. Sie mรผssen eine Verbindung zu jedem Host herstellen und einige Befehle remote ausfรผhren. Sie mรถchten das System auch neu starten und prรผfen, wann es wieder online ist.

Diese Aufgabe manuell fรผr alle 100 Hosts zu erledigen, wรคre ein Albtraum. Aber wir kรถnnen dies mit PERL leicht automatisieren

Entwerfen Sie Schritte, um diese oben genannte Automatisierung mithilfe von PERL zu erreichen

  1. รœbernehmen Sie Eingaben aus der Datei zu Hostinformationen wie (IP, Benutzername und Passwort).
  2. Verwenden Sie Net::SSH2, um eine Verbindung zu jedem System herzustellen und einen Kanal zum Ausfรผhren der Befehle einzurichten.
  3. Fรผhren Sie die erforderlichen Befehle aus, z. B. ls, dir, ifconfig, ps usw.
  4. Starten Sie das System.
  5. Warten Sie 10 Minuten, bis das System hochfรคhrt.
  6. Pingen Sie das System mit dem Net::Ping-Modul an und drucken Sie den Status aus.

Wir werden das obige Szenario codieren.

Nehmen wir eine Datei namens Input.txt, in der die vollstรคndigen Informationen zu allen Hosts gespeichert werden, zu denen wir eine Verbindung herstellen und den Befehl ausfรผhren mรผssen.

Eingabe.txt

192.168.1.2 Root-Passwort

192.168.1.3 Root-Passwort

192.168.1.4 root root123

HostCheck.pl

use Net::SSH2;
use Net::Ping;
use strict;
use warnings;
my $ping = Net::Ping->new();    # Creating object for Net::Ping
my $SSHObj = Net::SSH2->new();  #Creating object for Net::SSH2
open( FH, "Input.txt" );        # Opening file and placing content to FH
my @hosts = <FH>;
my $ip;
my @ips;
foreach (@hosts)
{
    if ( $_ =~ /(.*)\s+(\w+)\s+(.*)/ )    #Regex to get each info from file
    {
        $ip = $1;
        my $user = $2;
        my $password = $3;
        $SSHObj->connect($ip);
        print "Connecting to host -- $ip --Uname:$user --Password:$password\n";
        my $status = $SSHObj->auth_password( $user, $password );
        print "$status\n";
        die("unable to establish connection to -- $ip") unless ($status);
        my $shell = $SSHObj->channel();
        print "$_\n" while <$shell>;
        $shell->blocking(1);
        $shell->pty('tty');
        $shell->shell();
        sleep(5);
        #Executing the list of command on particular host. Can be any command
        print $shell "ls \n";
        print "$_\n" while <$shell>;
        print $shell "ps \n";
        print "$_\n" while <$shell>;
        print $shell "dir \n";
        print "$_\n" while <$shell>;
        print $shell "init 6\n";    #rebooting the system
        push( @ips, $ip );
    }
}
sleep 600;
foreach (@ips)
{
    if ( $ping->ping($_) )
    {
        print "$_ is alive.\n" if $ping->ping($_);
    }
    else
    {
        print "$_ is not still up --waiting for it to come up\n";
    }
}

Web-Testen

Perl ist nicht nur auf Speicher- und Netzwerktests beschrรคnkt. Wir kรถnnen auch webbasierte Tests mit PERL durchfรผhren. WWW-Mechanisieren ist ein Modul, fรผr das verwendet wird Webtests. Im Grunde wird kein Browser gestartet, um die Funktionalitรคt von Webanwendungen zu testen, sondern es wird der Quellcode der HTML-Seiten verwendet.

Wir kรถnnen auch browserbasierte Tests durchfรผhren Selenium IDE, RC, Web-Treiber. Perl wird unterstรผtzt fรผr Selenium.

\N"; #this speichert die verbleibende Zeichenfolge, nachdem die Musterรผbereinstimmung abgeschlossen ist.
drucken "

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: