GNU/Linux >> LINUX-Kenntnisse >  >> Linux

20 Killer-Perl-Programmiertipps für Anfänger unter UNIX / Linux OS

Wenn Sie ein Linux-Systemadministrator sind, der gelegentlich Perl-Code schreibt (oder) ein Entwickler ist, der die Programmiersprache Perl lernen möchte , diese 20 grundlegenden Perl-Programmiertipps und Tricks, die in diesem Artikel erklärt werden, geben Ihnen eine Starthilfe.

1. Alle installierten Perl-Module von der Unix-Befehlszeile auflisten

Holen Sie sich eine Liste aller installierten Perl-Module wie unten gezeigt.

$ perl -MFile::Find=find -MFile::Spec::Functions -Tlw -e 'find { wanted => sub { print canonpath $_ if /\.pm\z/ }, no_chdir => 1 }, @INC'

/usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/HTML/Filter.pm
/usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/HTML/LinkExtor.pm
/usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/HTML/PullParser.pm
/usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/HTML/Parser.pm
/usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/HTML/TokeParser.pm
.....

Im obigen Beispiel

  • Datei::Suchen und File::Spec::Functions module werden verwendet, um alle installierten Module aufzulisten.
  • M-Option lädt das Modul. Es führt use module aus bevor das Skript ausgeführt wird
  • -T-Option aktiviert die Taint-Überprüfung, die Perl anweist, die Daten des Benutzers zu verfolgen und zu vermeiden, etwas Unsicheres damit zu tun. Hier wird diese Option verwendet, um zu vermeiden, dass der aktuelle Verzeichnisname aus dem übernommen wird @INC-Variable und rekursives Auflisten der verfügbaren .pm-Dateien aus dem Verzeichnis.
  • -l-Option aktiviert die automatische Zeilenende-Verarbeitung in der Ausgabe. Bei Druckanweisungen wird das neue Zeilentrennzeichen (\n) am Ende jeder Zeile hinzugefügt.
  • -w-Option druckt alle Warnmeldungen.
  • -e-Option gibt an, dass die folgende Zeichenfolge als Perl-Skript (d. h. Befehlsfolge) interpretiert werden soll.

2. Alle installierten Perl-Module aus einem Perl-Skript auflisten (unter Verwendung des ExtUtils::Installed-Pakets)

Verwenden Sie das folgende Perl-Code-Snippet, um eine Liste der installierten Perl-Module zu erhalten.

my $Inst = ExtUtils::Installed->new();
my @Modules = $Inst->modules();
print "Current List of Installed PERL Modules:\n\n";
foreach my $mod(@Modules){
print "$mod\n";
}

Hinweis :Das Modul ExtUtils::Installed ist nicht mit dem Perl-Programm vorinstalliert. Sie sollten es also von cpan installieren.

3. Perl-Module mit dem Perldoc-Befehl auflisten

perldoc perlmodlib listet alle Module auf, die mit dem Perl-Programm vorinstalliert sind.

$ perldoc perlmodlib

       Attribute::Handlers Simpler definition of attribute handlers
       AutoLoader  Load subroutines only on demand
       .........

Hinweis: Sie können auch den Befehl „perldoc perllocal“ verwenden, um zusätzliche installierte Perl-Module zu identifizieren.

$ perldoc perllocal

Der Befehl perldoc perllocal listet alle im System installierten optionalen Module mit den folgenden Informationen auf:

  • Installationsdatum
  • Verzeichnisort, wo das Perl-Modul installiert ist
  • Versionsnummer des Perl-Moduls
  • usw.,

4. Sehen Sie sich die Perl-Dokumentation über die Unix-Befehlszeile an

Sie können entweder den perldoc- oder den man-Befehl verwenden, um Hilfe zu einem bestimmten Perl-Modul zu erhalten, wie unten gezeigt.

$ perldoc Regexp::Common

(or)

$ man Regexp::Common

Wenn das Perl-Dokument nicht ausreicht, verwenden Sie die Perldoc-Option -m, um sowohl den Quellcode als auch die unformatierte Pod-Dokumentation des angegebenen Perl-Moduls anzuzeigen.

$ perldoc -m Regexp::Common

Um die Dokumentation zu einer bestimmten Perl-Funktion anzuzeigen, verwenden Sie die Option -f, wie unten gezeigt.

$ perldoc -f splice

5. Sehen Sie sich die Perl-Online-Dokumentation an (oder laden Sie sie zur Offline-Nutzung herunter)

Viele ausgezeichnete Perl-Tutorials sind online unter Perl-Programmierdokumentation verfügbar.

Von dieser Website können Sie auch die HTML- oder PDF-Version der Perl-Dokumentation zur Offline-Anzeige herunterladen.

  • Vollversion (enthält HTML- und PDF-Dateien) – perldoc.tar.gz
  • Lite-Version (enthält nur HTML-Dateien) – perldoc-html.tar.gz

6. Perl-Dokumentation mit Podbrowser lesen

Laden Sie den Podbrowser herunter. Sie können die installierten Perl-Module, -Funktionen und die Perl-Dokumentation visuell vom Podbrowser aus durchsuchen. Von ihrer Website:

PodBrowser is a documentation browser for Perl.
You can view, search and print documentation for Perl's
builtin functions, its "perldoc" pages, pragmatic modules
and the default and user-installed modules.

Hinweis: Sie können den Vim-Editor auch als Perl-IDE verwenden, wie wir bereits besprochen haben.

7. CPAN-Modulkonfiguration manuell ändern

Um die Perl-Module von der Linux-Befehlszeile aus zu installieren, verwenden Sie CPAN. Wir haben bereits darüber gesprochen, wie man Perl-Module installiert – sowohl manuell als auch mit dem CPAN-Befehl.

Wenn Sie das Perl-Modul CPAN ( perl -MCPAN ) zum ersten Mal verwenden, wird ein Skript ausgeführt, um mehrere Optionen zu konfigurieren. Beispielsweise konfiguriert es den Speicherort von tar-, gzip- und unzip-Dateien, die Cache-Größe für das Build-Verzeichnis, den Speicherort der Quelldatei usw.,

Um die Konfigurationsdateien des CPAN-Moduls manuell neu zu konfigurieren, können Sie eine der folgenden Dateien bearbeiten.

  • ~/.cpan/CPAN/MyConfig.pm – Benutzerspezifische Perl-CPAN-Konfigurationsdatei
  • /etc/perl/CPAN/Config.pm – Die systemweite Perl-CPAN-Konfigurationsdatei wird irgendwo im Verzeichnisbaum des Perl-Moduls gespeichert.
$ vim ~/.cpan/CPAN/MyConfig.pm

(and / or)

$ vim /etc/perl/CPAN/Config.pm

8. CPAN-Modulkonfigurationen interaktiv ändern

Starten Sie die cpan-Shell wie unten gezeigt und führen Sie o conf init aus , das Sie fragt:„Sind Sie bereit für die manuelle Konfiguration?“, geben Sie Ihre Option ( Ja / Nein ) an, um fortzufahren. Dies listet alle Konfigurationsparameter zusammen mit ihrem Wert auf.

$ perl -MCPAN -e shell

cpan> o conf init

cpan> o conf

9. Überprüfen Sie, ob ein Perl-Modul installiert ist

Wenn Sie wissen möchten, ob ein Perl-Modul (z. B. Regexp::Common) installiert ist, führen Sie den folgenden Befehl aus. Wenn Sie "1" erhalten als Ausgabe wird dann das angegebene Perl-Modul installiert. Wenn nicht, erhalten Sie die unten gezeigte Fehlermeldung.

$ perl -MRegexp::Common -le 'print 1'

Can't locate Regexp/Common.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.8.8 /usr/local/share/perl/5.8.8 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .).

Hinweis: Sie können auch mit dem Befehl perldoc oder man überprüfen, ob das Perl-Modul installiert ist. Wenn das Perl-Modul installiert ist, wird die Handbuchseite des Moduls erfolgreich geöffnet. Wenn nicht, wird „keine Anleitung/Dokumentation für dieses Modul gefunden“ angezeigt

$ perldoc Regexp::Common

$ man Regexp::Common

10. Listen Sie die Verzeichnisse auf, in denen sich Perl-Module befinden

Das Perl-Array @INC enthält die Liste der Orte, an denen die Konstrukte „do EXPR“, „require“ oder „use“ nach ihren Bibliotheksdateien suchen. Der folgende Einzeiler zeigt den Inhalt des @INC-Perl-Arrays:

$ perl -e 'foreach $folder (@INC) { print "$folder\n";}'

11. Überprüfen Sie die Version eines installierten Perl-Moduls

Verwenden Sie den folgenden Befehl, um die Versionsnummer eines Moduls zu überprüfen.

#-- check the version number of CGI module
$ perl -MCGI -e 'print "$CGI::VERSION \n"'

#-- check the version number of Regexp::Common module
$ perl -MRegexp::Common -e 'print "$Regexp::Common::VERSION \n"'

Hinweis: Lesen Sie auch unbedingt unsere Rezension über das Perl Best Practices-Buch.

12. Geben Sie die zu verwendende Mindestversion des Perl-Moduls an

Manchmal möchten Sie vielleicht eine bestimmte Version eines Perl-Moduls in Ihrem Programm verwenden. Um die Verwendung früherer Versionen dieses Moduls zu vermeiden, fügen Sie die gewünschte Mindestversionsnummer in die use ‘module’-Anweisung ein, wie unten gezeigt.

#-- Use version 5.8 of later of module LWP
use LWP 5.8

Hinweis: Ihr Perl-Programm wird mit einer entsprechenden Fehlermeldung beendet, wenn die installierte Modulversion niedriger ist als die Version, die Sie im use-Befehl angegeben haben.

13. Nützliche Perl-Module zum Entwickeln von Webanwendungen

Wenn Sie eine Webanwendung entwickeln, sollten Sie die Verwendung der folgenden Perl-Module in Erwägung ziehen.

  • CGI – Allzweckmodul zum Erstellen von Webseiten
  • Vorlage – Template Toolkit zur Generierung dynamischer Webinhalte
  • LWP – LWP wird zum Abrufen von Webinhalten verwendet
  • WWW::Mechanisieren – Verwenden Sie dies, um die Interaktion mit einer Website zu automatisieren

14. Ermitteln Sie das Betriebssystem, unter dem das Perl-Skript ausgeführt wird

Der Name des zugrunde liegenden Betriebssystems wird in der Variablen $^O gespeichert. Im Folgenden sind einige der üblichen $^O-Werte

aufgeführt
  • Linux – Linux
  • MSWin32 – Windows
  • aix – AIX
  • solaris – Solaris

Hinweis: Der in $^O gespeicherte Wert enthält nur den Namen des Betriebssystems, nicht die Versionsnummer. Um die Versionsnummer zu ermitteln, sollten Sie POSIX::uname() aus dem POSIX-Paket verwenden.

15. Definieren Sie konstante Werte innerhalb eines Perl-Skripts

Der beste Weg, konstante Werte zu definieren, ist die Verwendung von Perl Readonly oder  Konstante Modul wie unten gezeigt.

use Readonly;
Readonly my $PI => 3.1415926535;

(or)

use Constant PI => 3.1415926535;

Bitte beachten Sie Folgendes:

  • Mit dem Readonly-Modul können Sie Readonly-Skalare, Hashes und Arrays definieren.
  • Wenn Sie versuchen, eine Readonly-Variable zu ändern, stirbt das Programm.

16. Ermitteln Sie den Betriebssystembenutzer und/oder die Betriebssystemgruppe, die ein Perl-Skript ausführen

Verwenden Sie die folgenden vordefinierten Variablen, um die Benutzer- und Gruppeninformationen des aktuellen Prozesses abzurufen:

  • $< – echte Benutzer-ID (uid); eindeutiger Wert
  • $> – effektive Benutzer-ID (euid); eindeutiger Wert
  • $( – echte Gruppen-ID (gid); Liste (durch Leerzeichen getrennt) von Gruppen
  • $) – effektive Gruppen-ID (egid); Liste (durch Leerzeichen getrennt) von Gruppen

Bitte beachten Sie Folgendes:

  • Diese Informationen gelten nur für Unix-Systeme
  • Die Werte, die diese Variablen enthalten, sind ganze Zahlen.
  • Um die Benutzer- und Gruppennamen zu erhalten, verwenden Sie „(getpwuid($<))[0]“ (für Benutzerinformationen) und „getgrgid($()“ (für Gruppen).

17. Ausführen externer Befehle

Wie unten erklärt, gibt es viele Möglichkeiten, externe Befehle von Perl auszuführen.

  • system() – Sie möchten einen Befehl ausführen und dessen Ausgabe nicht erfassen
  • exe – Sie möchten nicht zum aufrufenden Perl-Skript zurückkehren
  • Backticks – Sie möchten die Ausgabe des Befehls erfassen
  • öffnen – Sie möchten den Befehl (als Eingabe oder Ausgabe) an Ihr Perl-Skript weiterleiten

18. Analysieren Sie einfaches unordentliches Perl-Skript mit B::Deparse

Haben Sie einen Haufen verschleierten oder einfach nur unordentlichen und schwer lesbaren Perl-Code? Die B::Deparse Modul kann helfen. Es kompiliert und dekompiliert dann das ihm übergebene Programm, erweitert es und formatiert es schön. Es entfernt die im Perl-Programm geschriebenen Kommentarzeilen.

Um es in der Befehlszeile auszuführen, geben Sie „perl -MO=Deparse prog.pl“ ein. Hier ist ein Beispiel für seine Verwendung,

Erstellen Sie zuerst das Eingabeprogramm:

$ cat scary.pl
for(74,117,115,116){$::a.=chr};(($_.='qwertyui')&&
(tr/yuiqwert/her anot/))for($::b);for($::c){$_.=$^X;
/(p.{2}l)/;$_=$1}$::b=~/(..)$/;print("$::a$::b $::c hack$1.");

Übergeben Sie das Perl-Skript scary.pl an das Deparse-Modul

$ perl -MO=Deparse scary.pl
foreach $_ (74, 117, 115, 116) {
$a .= chr $_;
}
;
$_ .= 'qwertyui' and tr/eiqrtuwy/nr oteah/ foreach ($b);
foreach $_ ($c) {
$_ .= $^X;
/(p.{2}l)/;
$_ = $1;
}
$b =~ /(..)$/;
print "$a$b $c hack$1.";
scary.pl syntax OK

19. Installierte DBI-Treiber auflisten

DBI ist das Standard-Datenbankschnittstellenmodul für Perl. Das folgende Perl-Programm gibt eine Liste aller installierten DBI-Treiber aus.

use strict;
use warnings;

use DBI;

print map "$_\n",DBI->available_drivers;

Beispielausgabe des obigen Programms:

DBM
ExampleP
File
Proxy
Sponge
mysql

Wenn der benötigte Treiber nicht installiert ist, verwenden Sie CPAN, um das richtige DBD-Modul (Datenbanktreiber) zu finden.

20. Spezielle Variable für reguläre Ausdrücke

Eine der nützlichsten Funktionen oder die leistungsstärkste Möglichkeit zur String-Manipulation in Perl ist der reguläre Ausdruck.

Das Herzstück davon ist der reguläre Ausdruck, der von vielen anderen UNIX-Hilfsprogrammen geteilt wird.
Perl hat eine Menge spezieller Variablen, die nach jeder m//- oder s///-Regex-Übereinstimmung gefüllt werden.

  • $1, $2, $3 usw. enthalten die Rückwärtsreferenzen.
  • $+ enthält die letzte (höchstnummerierte) Rückwärtsreferenz.
  • $&(Dollar kaufmännisches Und) enthält die gesamte Regex-Übereinstimmung.
  • $’ (Dollar gefolgt von einem Apostroph oder einfachen Anführungszeichen) enthält den Teil der Zeichenfolge nach (rechts neben) der Regex-Übereinstimmung.
  • $` (Dollar-Backtick) enthält den Teil der Zeichenfolge vor (links von) der Regex-Übereinstimmung.

Die Verwendung dieser Variablen wird in Perl-Skripten nicht empfohlen, wenn es auf die Leistung ankommt, da dies dazu führt, dass Perl alles verlangsamt Regex-Übereinstimmungen in Ihrem gesamten Perl-Skript.

Alle diese Variablen sind schreibgeschützt und bleiben bestehen, bis der nächste Regex-Abgleich versucht wird.
Beispiel

$string = "This is the geek stuff article for perl learner";
$string =~ /the (g.*) stuff(.*) /;
print "Matched String=>$&\nBefore Match=>$`\nAfter Match=>$'\nLast Paren=>$+\nFirst Paren=>$1\n";

Ausgabe des obigen Beispiels:

Matched String=>the geek stuff article for perl
Before Match=>This is
After Match=>learner
Last Paren=> article for perl
First Paren=>geek

Linux
  1. 3 Tipps zum Drucken mit Linux

  2. 6 Open-Source-Tools und Tipps zum Sichern eines Linux-Servers für Anfänger

  3. 8 Tipps für die Linux-Kommandozeile

  4. So installieren Sie Perl-Module unter Linux

  5. Was sind gute Linux/Unix-Bücher für fortgeschrittene Benutzer?

Linux w Command Tutorial für Anfänger (5 Beispiele)

Linux ss Command Tutorial für Anfänger (8 Beispiele)

Linux-Suchbefehl für Anfänger (8 Beispiele)

16 praktische Beispiele für Linux LS-Befehle für Anfänger

Linux-mv-Befehl für Anfänger erklärt (8 Beispiele)

Linux VI Editor Shortcuts, Tipps und Produktivitäts-Hacks für Anfänger