GoGPT Best VPN GoSearch

OnWorks-Favicon

perlfaq3 - Online in der Cloud

Führen Sie perlfaq3 im kostenlosen OnWorks-Hosting-Provider über Ubuntu Online, Fedora Online, Windows-Online-Emulator oder MAC OS-Online-Emulator aus

Dies ist der Befehl perlfaq3, der im kostenlosen OnWorks-Hosting-Provider über eine unserer zahlreichen kostenlosen Online-Workstations wie Ubuntu Online, Fedora Online, Windows-Online-Emulator oder MAC OS-Online-Emulator ausgeführt werden kann

PROGRAMM:

NAME/FUNKTION


perlfaq3 - Programmiertools

VERSION


Version 5.021009

BESCHREIBUNG


Dieser Abschnitt der FAQ beantwortet Fragen zu Programmierwerkzeugen und Programmierung
unterstützen.

Wie do I do (irgendetwas)?
Haben Sie sich CPAN angesehen (siehe perlfaq2)? Die Chancen stehen gut, dass jemand bereits a . geschrieben hat
Modul, das Ihr Problem lösen kann. Haben Sie die entsprechenden Manpages gelesen? Hier ist ein
Kurzer Inhaltsverzeichnis:

Basics
perldata - Perl-Datentypen
perlvar - Vordefinierte Perl-Variablen
perlsyn - Perl-Syntax
perlop - Perl-Operatoren und -Vorrang
perlsub - Perl-Subroutinen
Ausführung
perlrun - wie man den Perl-Interpreter ausführt
perldebug - Perl-Debugging
Funktionen
perlfunc - In Perl integrierte Funktionen
Objekte
perlref - Perl-Referenzen und verschachtelte Datenstrukturen
perlmod - Perl-Module (Pakete und Symboltabellen)
perlobj - Perl-Objekte
perltie - wie man eine Objektklasse in einer einfachen Variablen versteckt
Datenstrukturen
perlref - Perl-Referenzen und verschachtelte Datenstrukturen
perllol - Manipulieren von Arrays von Arrays in Perl
perldsc - Perl-Datenstrukturen-Kochbuch
Module
perlmod - Perl-Module (Pakete und Symboltabellen)
perlmodlib - neue Perl-Module erstellen und vorhandene finden
Regexe
perlre - Reguläre Ausdrücke in Perl
perlfunc - In Perl integrierte Funktionen>
perlop - Perl-Operatoren und -Vorrang
perllocale - Umgang mit Perl-Locales (Internationalisierung und Lokalisierung)
Umzug nach perl5
perltrap - Perlfallen für die Unvorsichtigen
perl
Verknüpfung mit C
perlxstut - Tutorial zum Schreiben von XSUBs
perlxs - Referenzhandbuch für die XS-Sprache
perlcall - Perl-Aufrufkonventionen von C
perlguts - Einführung in die Perl-API
perlembed - wie Sie Perl in Ihr C-Programm einbetten
Verschiedene
<http://www.cpan.org/misc/olddoc/FMTEYEWTK.tgz> (keine Manpage, aber dennoch nützlich, a
Sammlung verschiedener Aufsätze zu Perl-Techniken)

Ein grobes Inhaltsverzeichnis für das Perl-Manpage-Set findet sich in perltoc.

Wie können. I - Perl interaktiv?
Der typische Ansatz verwendet den Perl-Debugger, der in der perldbug(1) Handbuchseite, auf einer
"leeres" Programm, wie folgt:

perl-de 42

Geben Sie nun einfach einen beliebigen zulässigen Perl-Code ein, und er wird sofort ausgewertet. Du kannst auch
Untersuchen Sie die Symboltabelle, rufen Sie Stack-Backtraces ab, überprüfen Sie Variablenwerte, setzen Sie Breakpoints,
und andere Operationen, die typischerweise in symbolischen Debuggern zu finden sind.

Sie können auch Devel::REPL verwenden, eine interaktive Shell für Perl, allgemein bekannt als a
REPL - Lesen, Auswerten, Drucken, Schleifen. Es bietet verschiedene praktische Funktionen.

Wie do I gefunden welche Module sind installiert on my System?
Von der Befehlszeile aus können Sie den Schalter "-l" des Befehls "cpan" verwenden:

$cpan-l

Sie können auch den Schalter "-a" von "cpan" verwenden, um eine Autobundle-Datei mit "CPAN.pm" zu erstellen.
versteht und kann jedes Modul neu installieren:

$cpan-a

Innerhalb eines Perl-Programms können Sie das ExtUtils::Installed-Modul verwenden, um alle installierten
Distributionen, obwohl es eine Weile dauern kann, bis sie ihre Wirkung entfalten. Die Standardbibliothek, die
kommt mit Perl wird nur als "Perl" angezeigt (obwohl Sie die mit bekommen können
Modul::CoreList).

Verwenden Sie ExtUtils::Installed;

my $inst = ExtUtils::Installed->new();
meine @modules = $inst->modules();

Wenn Sie eine Liste aller Dateinamen der Perl-Module wünschen, können Sie File::Find::Rule:

benutze File::Find::Rule;

meine @files = Datei::Find::Regel->
Extras({folgen => 1})->
file()->
name( '*.pm' )->
in(@INC)
;

Wenn Sie dieses Modul nicht haben, können Sie dasselbe mit File::Find tun, das Teil von . ist
die Standardbibliothek:

verwenden Datei::Suchen;
meine Akten;

finden(
{
gesucht => Unter {
push @files, $File::Find::fullname
if -f $File::Find::fullname && /\.pm$/
},
folgen => 1,
follow_skip => 2,
},
@INK
);

print Join "\n", @files;

Wenn Sie nur schnell prüfen müssen, ob ein Modul verfügbar ist, können Sie es überprüfen
Dokumentation. Wenn Sie die Dokumentation lesen können, ist das Modul höchstwahrscheinlich installiert. Wenn
Sie können die Dokumentation nicht lesen, das Modul hat möglicherweise keine (in seltenen Fällen):

$ perldoc Modul::Name

Sie können auch versuchen, das Modul in einen Einzeiler einzufügen, um zu sehen, ob Perl es findet:

$ perl -MModul::Name -e1

(Wenn Sie keine Fehlermeldung "Can't locate ... in @INC" erhalten, dann hat Perl die
Modulname, nach dem Sie gefragt haben.)

Wie do I debuggen my Perl Programme?
(Beigetragen von Brian d Foy)

Bevor Sie etwas anderes tun, können Sie sich selbst helfen, indem Sie sicherstellen, dass Sie sich von Perl erzählen lassen
über Problembereiche in Ihrem Code. Indem Sie Warnungen und Beschränkungen aktivieren, können Sie sich auf den Weg machen
viele Probleme, bevor sie zu groß werden. Mehr dazu erfährst du im strengen und
Warnungen.

#!/ Usr / bin / perl
Verwenden Sie strenge;
Warnungen verwenden;

Der einfachste Debugger ist darüber hinaus die Funktion "Drucken". Verwenden Sie es, um Werte zu betrachten als
Sie führen Ihr Programm aus:

print STDERR "Der Wert ist [$value]\n";

Das Data::Dumper-Modul kann Perl-Datenstrukturen hübsch drucken:

Verwenden Sie Data::Dumper qw(Dumper);
print STDERR "Der Hash ist". Dumper(\%hash). "\n";

Perl kommt mit einem interaktiven Debugger, den Sie mit dem Schalter "-d" starten können. Es ist
im perldbug vollständig erklärt.

Wenn Sie eine grafische Benutzeroberfläche wünschen und über Tk verfügen, können Sie "ptkdb" verwenden. Ist Zustand
CPAN und kostenlos verfügbar.

Wenn Sie etwas viel Ausgereifteres und Kontrollierbareres benötigen, ist Leon Brocards Devel::ebug
(die Sie mit dem Schalter "-D" als "-Debug" aufrufen können) gibt Ihnen die programmatischen Hooks
in alles, was Sie brauchen, um Ihre eigenen zu schreiben (ohne zu viel Schmerz und Leiden).

Sie können auch einen kommerziellen Debugger wie Affrus (Mac OS X), Komodo von Activestate . verwenden
(Windows und Mac OS X) oder EPIC (die meisten Plattformen).

Wie do I profile my Perl Programme?
(Beigetragen von Brian d Foy, aktualisiert am 25. Juli, 12:22:26 Uhr PDT 2008)

Der Namespace "Devel" enthält mehrere Module, mit denen Sie Ihre Perl-Programme profilieren können.

Der Devel::NYTProf (New York Times Profiler) führt sowohl Anweisungs- als auch Subroutinen-Profilerstellung durch.
Es ist über CPAN verfügbar und Sie rufen es auch mit dem Schalter "-d" auf:

perl -d:NYTProf some_perl.pl

Es erstellt eine Datenbank mit den Profilinformationen, die Sie in Berichte umwandeln können. Die
Der Befehl "nytprofhtml" verwandelt die Daten in einen HTML-Bericht ähnlich dem Devel::Cover
Bericht:

nytprofhtml

Sie könnten auch daran interessiert sein, den Benchmark zum Messen und Vergleichen von Code-Snippets zu verwenden.

Weitere Informationen zum Profiling finden Sie in Programmierung Perl, Kapitel 20, oder Mastering Perl,
Kapitel 5.

perldbguts-Dokumente, die einen benutzerdefinierten Debugger erstellen, wenn Sie eine spezielle Art von erstellen müssen
Profiler. Brian d Foy beschreibt den Prozess in Die Perl Journal, "Erstellen einer Perle"
Debugger",http://www.ddj.com/184404522> und "Profilerstellung in Perl"
<http://www.ddj.com/184404580>.

Perl.com hat zwei interessante Artikel zum Thema Profiling: "Profiling Perl", von Simon Cozens,
<http://www.perl.com/lpt/a/850> und "Debugging and Profiling mod_perl Applications", von
Frank Wiles,http://www.perl.com/pub/a/2006/02/09/debug_mod_perl.html>.

Randal L. Schwartz schreibt über Profiling in "Speeding up Your Perl Programs" für Unix
Bewertung,http://www.stonehenge.com/merlyn/UnixReview/col49.html> , und "Profiling in
Template Toolkit via Overriding" für Linux Magazin,
<http://www.stonehenge.com/merlyn/LinuxMag/col75.html>.

Wie do I Querverweis my Perl Programme?
Das Modul B::Xref kann verwendet werden, um Querverweisberichte für Perl-Programme zu generieren.

perl -MO=Xref[,OPTIONEN] scriptname.plx

Is dort a hübsch-Drucker (Formatierer) für Perle?
Perl::Tidy enthält ein Perl-Skript perltidy, das Perl-Skripte einrückt und umformatiert
Machen Sie sie leichter lesbar, indem Sie versuchen, die Regeln des Perlstils zu befolgen. Wenn du schreibst
Perl, oder verbringen Sie viel Zeit damit, Perl zu lesen, werden Sie es wahrscheinlich nützlich finden.

Wenn Sie sich einfach an die Richtlinien in perlstyle halten, sollten Sie dies natürlich nicht tun müssen
umformatieren. Die Gewohnheit, Ihren Code beim Schreiben zu formatieren, hilft, Fehler zu vermeiden. Ihre
Editor kann und sollte Ihnen dabei helfen. Der perl-mode oder neuer cperl-mode für emacs kann
bieten bemerkenswert viel Hilfe bei den meisten (aber nicht allen) Codes und noch weniger
Programmierbare Editoren können dabei eine wesentliche Hilfestellung bieten. Tom Christiansen und viele andere
VI-Benutzer schwören auf folgende Einstellungen in vi und seinen Klonen:

setze ai sw=4
Karte! ^O {^M}^[O^T

Setzen Sie das in Ihre .exrc Datei (Ersetzen der Caretzeichen durch Steuerzeichen) und
weg gehst du. Im Einfügemodus steht ^T für das Einrücken, ^D für das Aufheben und ^O für
Blockieren – sozusagen. Ein ausführlicheres Beispiel mit Kommentaren finden Sie unter
<http://www.cpan.org/authors/id/TOMC/scripts/toms.exrc.gz>

Is dort an IDE or Windows Perl Editor?
Perl-Programme sind nur einfacher Text, also kann jeder Editor ausreichen.

Wenn Sie unter Unix arbeiten, haben Sie bereits eine IDE - Unix selbst. Die Unix-Philosophie ist die
Philosophie mehrerer kleiner Tools, die jeweils eine Sache tun und es gut machen. Es ist wie ein
Werkzeugkasten des Zimmermanns.

Wenn Sie eine IDE wünschen, überprüfen Sie Folgendes (in alphabetischer Reihenfolge, nicht nach Präferenz):

Eclipse
<http://e-p-i-c.sf.net/>

Das Eclipse Perl Integration Project integriert das Bearbeiten/Debuggen von Perl in Eclipse.

Motorenseite
<http://www.enginsite.com/>

Perl Editor von EngInSite ist eine vollständig integrierte Entwicklungsumgebung (IDE) für
Erstellen, Testen und Debuggen von Perl-Skripten; das Tool läuft unter Windows
9x/NT/2000/XP oder höher.

Kephra
<http://kephra.sf.net>

In Perl geschriebener GUI-Editor mit wxWidgets und Scintilla mit vielen kleineren
Merkmale. Strebt eine Benutzeroberfläche an, die auf Perl-Prinzipien wie TIMTowTDI und "einfache Dinge" basiert
sollte einfach sein, schwierige Dinge sollten möglich sein".

Komodo
<http://www.ActiveState.com/Products/Komodo/>

Cross-Plattform von ActiveState (ab Oktober 2004: Windows, Linux und Solaris),
Mehrsprachige IDE hat Perl-Unterstützung, einschließlich eines Debuggers für reguläre Ausdrücke und
Remote-Debugging.

Notepad + +
<http://notepad-plus.sourceforge.net/>

Öffnen Sie die Perl-IDE
<http://open-perl-ide.sourceforge.net/>

Open Perl IDE ist eine integrierte Entwicklungsumgebung zum Schreiben und Debuggen von Perl
Skripte mit der ActivePerl-Distribution von ActiveState unter Windows 95/98/NT/2000.

OptiPerl
<http://www.optiperl.com/>

OptiPerl ist eine Windows-IDE mit simulierter CGI-Umgebung, einschließlich Debugger und
Syntaxhervorhebungseditor.

Pater
<http://padre.perlide.org/>

Padre ist eine plattformübergreifende IDE für Perl, die in Perl geschrieben wurde und wxWidgets verwendet, um eine
natives Erscheinungsbild. Es ist Open Source unter der künstlerischen Lizenz. Es ist einer der
neuere Perl-IDEs.

PerlBuilder
<http://www.solutionsoft.com/perl.htm>

PerlBuilder ist eine integrierte Entwicklungsumgebung für Windows, die Perl . unterstützt
Entwicklung.

visiPerl+
<http://helpconsulting.net/visiperl/index.html>

Von Help Consulting für Windows.

Visuelle Perle
<http://www.activestate.com/Products/Visual_Perl/>

Visual Perl ist ein Visual Studio.NET-Plug-In von ActiveState.

Zeus
<http://www.zeusedit.com/lookmain.html>

Zeus für Windows ist ein weiterer mehrsprachiger Win32-Editor/IDE, der unterstützt wird
für Perl.

Für Redakteure: Wenn Sie unter Unix arbeiten, haben Sie wahrscheinlich bereits vi oder einen vi-Klon und möglicherweise ein
emacs auch, sodass Sie möglicherweise nichts herunterladen müssen. In jedem Emacs ist der cperl-mode (Mx
cperl-mode) bietet Ihnen vielleicht den besten verfügbaren Perl-Bearbeitungsmodus in jedem Editor.

Wenn Sie Windows verwenden, können Sie jeden Editor verwenden, mit dem Sie mit Klartext arbeiten können, z
als NotePad oder WordPad. Textverarbeitungsprogramme wie Microsoft Word oder WordPerfect normalerweise
funktionieren nicht, da sie alle möglichen Informationen hinter den Kulissen einfügen, obwohl einige
erlauben Ihnen, Dateien als "Nur Text" zu speichern. Sie können auch entworfene Texteditoren herunterladen
speziell für die Programmierung, wie Textpad (http://www.textpad.com/> ) und UltraEdit
(http://www.ultraedit.com/> ), unter anderem.

Wenn Sie MacOS verwenden, gelten die gleichen Bedenken. MacPerl (für klassische Umgebungen) kommt
mit einem einfachen Editor. Beliebte externe Editoren sind BBEdit (
<http://www.barebones.com/products/bbedit/> ) oder Alpha (
<http://www.his.com/~jguyer/Alpha/Alpha8.html>). MacOS X-Benutzer können Unix-Editoren als
Gut.

GNU Emacs
<http://www.gnu.org/software/emacs/windows/ntemacs.html>

MikroEMACS
<http://www.microemacs.de/>

XEmacs
<http://www.xemacs.org/Download/index.html>

Jedhttp://space.mit.edu/~davis/jed/>

oder ein vi-Klon wie

Vimhttp://www.vim.org/>

Villas
<http://dickey.his.com/vile/vile.html>

Die folgenden sind mehrsprachige Win32-Editoren/IDEs, die Perl unterstützen:

MultiEdit
<http://www.MultiEdit.com/>

Slickedit
<http://www.slickedit.com/>

Kontext
<http://www.contexteditor.org/>

Es gibt auch einen toyedit Text-Widget-basierten Editor, der in Perl geschrieben ist und mit verteilt wird
das Tk-Modul auf CPAN. Die ptkdb (http://ptkdb.sourceforge.net/> ) ist ein Perl/Tk-basiertes
Debugger, der als eine Art Entwicklungsumgebung fungiert. Perl-Komponist (
<http://perlcomposer.sourceforge.net/> ) ist eine IDE für die Erstellung von Perl/Tk-GUIs.

Neben einem Editor/IDE könnten Sie an einer leistungsfähigeren Shell-Umgebung interessiert sein
für Win32. Ihre Optionen umfassen

bash
aus dem Cygwin-Paket (http://cygwin.com/>)

zshhttp://www.zsh.org/>

Cygwin unterliegt der GNU General Public License (aber das sollte für Perl keine Rolle spielen).
verwenden). Cygwin enthält (zusätzlich zur Shell) einen umfassenden Satz von Standard-Unix
Toolkit-Dienstprogramme.

BBEdit und TextWrangler
sind Texteditoren für OS X, die einen Perl-Empfindlichkeitsmodus haben (
<http://www.barebones.com/>).

COHO Expo bei der können. I bekommen Perl Makros für wir?
Eine vollständige Version der vi-Konfigurationsdatei von Tom Christiansen finden Sie unter
<http://www.cpan.org/authors/Tom_Christiansen/scripts/toms.exrc.gz> , der Standard
Benchmark-Datei für vi-Emulatoren. Die Datei läuft am besten mit nvi, der aktuellen Version von vi
aus Berkeley, das übrigens mit einem eingebetteten Perl-Interpreter gebaut werden kann - siehe
<http://www.cpan.org/src/misc/>.

COHO Expo bei der können. I bekommen Perl-Modus or cperl-Modus für Emacs?
Seit Emacs Version 19, Patchlevel 22 oder so, gibt es sowohl eine perl-mode.el als auch
Unterstützung für den eingebauten Perl-Debugger. Diese sollten mit dem Standard-Emacs 19 . geliefert werden
Verteilung.

Beachten Sie, dass der Perl-Modus von emacs mit "main'foo" (einzelnes Anführungszeichen) und Durcheinander passt
die Einrückung und Hervorhebung. Sie verwenden wahrscheinlich "main::foo" in neuem Perl-Code
jedenfalls sollte das kein problem sein.

Informationen zu CPerlMode finden Sie unterhttp://www.emacswiki.org/cgi-bin/wiki/CPerlMode>

Wie können. I - Flüche mit Perle?
Das Curses-Modul von CPAN bietet eine dynamisch ladbare Objektmodul-Schnittstelle zu a
Fluch Bibliothek. Eine kleine Demo finden Sie im Verzeichnis
<http://www.cpan.org/authors/Tom_Christiansen/scripts/rep.gz> ; Dieses Programm wiederholt sich a
Befehl und aktualisiert den Bildschirm nach Bedarf, Rendern Vertreter ps axu ähnlich Top.

Wie können. I schreiben a GUI (X, Tk, GTK, etc.) in Perle?
(Beigetragen von Ben Morrow)

Es gibt eine Reihe von Modulen, mit denen Sie GUIs in Perl schreiben können. Die meisten GUI-Toolkits haben ein
Perl-Schnittstelle: Es folgt eine unvollständige Liste.

Tk Das funktioniert unter Unix und Windows und die aktuelle Version sieht halb so schlimm aus
unter Windows wie früher. Einige der GUI-Elemente fühlen sich immer noch nicht richtig an,
obwohl. Die Benutzeroberfläche ist sehr natürlich und "perlish", was die Verwendung in kleinen
Skripte, die nur eine einfache GUI benötigen. Es wurde eine Weile nicht aktualisiert.

Wx Dies ist eine Perl-Anbindung für das plattformübergreifende wxWidgets-Toolkit (
<http://www.wxwidgets.org>). Es funktioniert unter Unix, Win32 und Mac OS X, mit nativen
Widgets (Gtk unter Unix). Die Schnittstelle folgt der C++-Schnittstelle eng, aber die
Dokumentation ist etwas spärlich für jemanden, der die Bibliothek nicht kennt, meistens nur
Verweisen Sie auf die C++-Dokumentation.

Gtk und Gtk2
Dies sind Perl-Bindungen für das Gtk-Toolkit (http://www.gtk.org>). Die Schnittstelle
zwischen den Versionen 1 und 2 erheblich geändert, sodass sie separate Perl-Module haben. Es
läuft unter Unix, Win32 und Mac OS X (erfordert derzeit einen X-Server auf Mac OS, aber
ein 'nativer' Port ist im Gange) und die Widgets sehen auf jeder Plattform gleich aus:
sie stimmen nicht mit den nativen Widgets überein. Wie bei Wx folgen die Perl-Bindungen der C-API
und die Dokumentation erfordert, dass Sie die C-Dokumentation lesen, um sie zu verstehen
es.

Win32::GUI
Dies bietet Zugriff auf die meisten Win32-GUI-Widgets von Perl. Offensichtlich nur
läuft unter Win32 und verwendet native Widgets. Die Perl-Schnittstelle folgt nicht wirklich
die C-Schnittstelle: sie wurde perlisher gemacht und die Dokumentation ist ziemlich gut.
Fortgeschrittenere Dinge erfordern möglicherweise Vertrautheit mit den C-Win32-APIs oder einen Verweis auf
MSDN.

Kamelknochen
Kamelknochen (http://camelbones.sourceforge.net> ) ist eine Perl-Schnittstelle zu Mac OS X's
Cocoa GUI-Toolkit und kann als solches verwendet werden, um native GUIs unter Mac OS X zu erstellen
nicht auf CPAN, da es Frameworks erfordert, die CPAN.pm nicht installieren kann, aber
Die Installation erfolgt über das Standard-OSX-Paketinstallationsprogramm. Die Perl-API ist wieder sehr
In der Nähe der ObjC-API wird es verpackt, und die Dokumentation zeigt Ihnen nur, wie es geht
von einem ins andere übersetzen.

Qt Es gibt eine Perl-Schnittstelle zum Qt-Toolkit von TrollTech, aber es scheint keine zu sein
Gepflegt

Athena
Sx ist eine Schnittstelle zum Athena-Widget-Set, das mit X geliefert wird, aber wieder erscheint es
heutzutage nicht mehr viel zu gebrauchen.

Wie können. I um my Perl Programm Lauf Schneller?
Der beste Weg, dies zu tun, besteht darin, einen besseren Algorithmus zu entwickeln. Dies kann oft ein
dramatischer Unterschied. Jon Bentleys Buch Programmierung Pearls (das ist kein Schreibfehler!)
hat auch einige gute Tipps zur Optimierung. Benchmarking-Beratung läuft auf: Benchmark
und Profil, um sicherzustellen, dass Sie den richtigen Teil optimieren, suchen Sie nach besseren Algorithmen
Anstatt Ihren Code zu mikrotuning, und wenn alles andere fehlschlägt, sollten Sie einfach schneller kaufen
Hardware. Sie werden wahrscheinlich die Antwort auf die frühere Frage "Wie kann ich?
Profil meiner Perl-Programme?", falls noch nicht geschehen.

Ein anderer Ansatz besteht darin, selten verwendeten Perl-Code automatisch zu laden. Siehe AutoSplit und
AutoLoader-Module in der Standard-Distribution dafür. Oder du könntest das lokalisieren
Engpass und denken Sie darüber nach, nur diesen Teil in C zu schreiben, so wie wir es früher gemacht haben
Engpässe in C-Code und schreiben Sie sie in Assembler. Ähnlich wie beim Umschreiben in C, Module, die
kritische Abschnitte haben, können in C geschrieben werden (zB das PDL-Modul von CPAN).

Wenn Sie derzeit Ihre ausführbare Perl-Datei mit einem freigegebenen verknüpfen libc.so, kannst du oft a . gewinnen
10-25% Leistungsvorteil durch Neuaufbau, um stattdessen mit einer statischen libc.a zu verknüpfen. Dies
wird ein größeres Perl ausführbar machen, aber Ihre Perl-Programme (und Programmierer) werden es Ihnen vielleicht danken
dafür. Siehe die INSTALLIEREN Datei in der Quelldistribution für weitere Informationen.

Das undump-Programm war ein alter Versuch, das Perl-Programm zu beschleunigen, indem es die bereits
kompiliertes Formular auf die Festplatte. Dies ist keine praktikable Option mehr, da es nur bei wenigen funktioniert hat
Architekturen und war sowieso keine gute Lösung.

Wie können. I um my Perl Programm teilnehmen: weniger Erinnerung?
Wenn es um Zeit-Raum-Kompromisse geht, zieht es Perl fast immer vor, den Speicher auf eine
Problem. Skalare in Perl verbrauchen mehr Speicher als Strings in C, Arrays brauchen mehr,
und Hashes verwenden noch mehr. Obwohl noch viel zu tun ist, wurden die letzten Veröffentlichungen
diese Probleme anzugehen. Ab 5.004 werden beispielsweise doppelte Hash-Schlüssel gemeinsam genutzt
alle Hashes, die sie verwenden, erfordern also keine Neuzuweisung.

In einigen Fällen mit substr () or vec() Arrays zu simulieren kann sehr vorteilhaft sein. Zum
Beispiel: Ein Array mit tausend Booleschen Werten benötigt mindestens 20,000 Byte Speicherplatz, aber es
in einen 125-Byte-Bit-Vektor umgewandelt werden - eine beträchtliche Speichereinsparung. Der Standard
Das Modul Tie::SubstrHash kann auch für bestimmte Arten von Datenstrukturen hilfreich sein. Wenn du bist
Arbeiten mit spezialisierten Datenstrukturen (z. B. Matrizen) Module, die implementieren
diese in C benötigen möglicherweise weniger Speicher als äquivalente Perl-Module.

Eine andere Sache, die Sie versuchen sollten, ist herauszufinden, ob Ihr Perl mit dem System malloc kompiliert wurde oder
mit Perls eingebautem malloc. Welches auch immer es ist, versuchen Sie es mit dem anderen und sehen Sie, ob
das macht einen unterschied. Informationen zu malloc finden Sie im INSTALLIEREN Datei in der Quelle
Verteilung. Sie können herausfinden, ob Sie malloc von Perl verwenden, indem Sie "perl
-V:usemymalloc".

Natürlich ist der beste Weg, um Speicher zu sparen, nichts zu tun, um ihn beim ersten Mal zu verschwenden
Platz. Gute Programmierpraktiken können dazu einen großen Beitrag leisten:

Schlürfe nicht!
Lesen Sie keine ganze Datei in den Speicher, wenn Sie sie Zeile für Zeile verarbeiten können. Oder mehr
Verwenden Sie konkret eine Schleife wie diese:

#
# Gute Idee
#
while (meine $line = <$file_handle>) {
#...
}

an Stelle von:

#
# Schlechte Idee
#
meine @data = <$file_handle>;
foreach (@data) {
#...
}

Wenn die Dateien, die Sie verarbeiten, klein sind, spielt es keine Rolle, wie Sie es tun
es, aber es macht einen großen Unterschied, wenn sie anfangen, größer zu werden.

Verwenden Sie Karte und grep selektiv
Denken Sie daran, dass sowohl map als auch grep ein LIST-Argument erwarten. Gehen Sie also folgendermaßen vor:

@wanted = grep {/pattern/} <$file_handle>;

führt dazu, dass die gesamte Datei geschlürft wird. Bei großen Dateien ist es besser, eine Schleife zu erstellen:

while (<$file_handle>) {
push(@wollte, $_) if /pattern/;
}

Vermeiden Sie unnötige Anführungszeichen und Zeichenfolgen
Geben Sie keine großen Zeichenfolgen in Anführungszeichen ein, es sei denn, es ist unbedingt erforderlich:

mein $copy = "$large_string";

erstellt 2 Kopien von $large_string (eine für $copy und eine andere für die Anführungszeichen), während

mein $copy = $large_string;

macht nur eine Kopie.

Dito zum Stringifizieren großer Arrays:

{
lokale $, = "\n";
print @big_array;
}

ist viel speichereffizienter als beide

print Join "\n", @big_array;

or

{
local $" = "\n";
drucke "@big_array";
}

Als Referenz übergeben
Übergeben Sie Arrays und Hashes als Referenz, nicht als Wert. Zum einen ist es der einzige Weg, um
Übergeben Sie mehrere Listen oder Hashes (oder beides) in einem einzigen Aufruf/Return. Es vermeidet auch
Erstellen einer Kopie des gesamten Inhalts. Dies erfordert jedoch ein gewisses Urteilsvermögen, denn
alle Änderungen werden auf die ursprünglichen Daten übertragen. Wenn du wirklich verstümmeln willst
(äh, modifizieren) eine Kopie, müssen Sie den Speicher opfern, der benötigt wird, um eine Kopie zu erstellen.

Binden Sie große Variablen an die Festplatte
Ziehen Sie für "große" Datenspeicher (dh solche, die den verfügbaren Speicher überschreiten) die Verwendung eines von
die DB-Module, um es auf der Festplatte statt im RAM zu speichern. Dies führt zu einer Strafe in
Zugriffszeit, aber das ist wahrscheinlich besser, als Ihre Festplatte zu zerstören aufgrund von
massiver Austausch.

Is it Safe zu Rückkehr a Referenz zu aus einer regionalen or lexikalisch Daten?
Jawohl. Das Garbage Collection-System von Perl kümmert sich darum, damit alles richtig funktioniert.

Sub-Makeone {
mein @a = ( 1 .. 10 );
Rückgabe \@a;
}

für ( 1 .. 10 ) {
push @ viele, makeone();
}

drucke $viele[4][5], "\n";

drucke "@viele\n";

Wie können. I kostenlos an Array or Hash- so my Programm schrumpft?
(Beigetragen von Michael Carman)

Sie können normalerweise nicht. Lexika zugewiesener Speicher (dh mein() Variablen) können nicht zurückgefordert werden
oder wiederverwendet werden, auch wenn sie den Geltungsbereich verlassen. Es ist reserviert für den Fall, dass die Variablen zurückkommen
in den Umfang. Globalen Variablen zugewiesener Speicher kann (innerhalb Ihres Programms) wiederverwendet werden durch
mit automatisierten undef() und / oder löschen().

Auf den meisten Betriebssystemen kann der einem Programm zugewiesene Speicher niemals an das
System. Aus diesem Grund lösen sich langlaufende Programme manchmal wieder auf. Einige Betriebs
Systeme (insbesondere Systeme, die mmap(2) zum Zuweisen großer Speicherblöcke) kann
nicht mehr genutzten Speicher zurückfordern, aber auf solchen Systemen muss perl konfiguriert werden und
kompiliert, um den Malloc des Betriebssystems zu verwenden, nicht den von Perl.

Im Allgemeinen ist die Speicherzuweisung und -aufhebung nicht etwas, was Sie tun können oder sollten
sich viele Sorgen machen in Perl.

Siehe auch "Wie kann ich dafür sorgen, dass mein Perl-Programm weniger Speicher benötigt?"

Wie können. I um my CGI Skript mehr effizient?
Über die beschriebenen normalen Maßnahmen hinaus, um allgemeine Perl-Programme schneller oder kleiner zu machen, a
CGI-Programm hat zusätzliche Probleme. Es kann mehrmals pro Sekunde ausgeführt werden. Da jeder
Wenn es ausgeführt wird, muss es neu kompiliert werden und weist oft ein Megabyte oder mehr davon zu
Systemspeicher, das kann ein Killer sein. Kompilieren in C nicht gehen zu Hilfe Sie weil das
Der Overhead des Prozessstarts ist der Engpass.

Es gibt drei beliebte Möglichkeiten, diesen Overhead zu vermeiden. Eine Lösung besteht darin, die
Apache HTTP-Server (erhältlich vonhttp://www.apache.org/> ) mit einem der mod_perl
oder mod_fastcgi-Plugin-Module.

Mit mod_perl und dem Apache::Registry-Modul (verteilt mit mod_perl) läuft httpd
mit einem eingebetteten Perl-Interpreter, der Ihr Skript vorkompiliert und dann ausführt
innerhalb desselben Adressraums ohne Forking. Die Apache-Erweiterung ermöglicht auch Perl-Zugriff
an die interne Server-API, sodass in Perl geschriebene Module so ziemlich alles tun können, was ein Modul ist
geschrieben in C kann. Weitere Informationen zu mod_perl finden Sie unterhttp://perl.apache.org/>

Mit dem FCGI-Modul (von CPAN) und dem mod_fastcgi-Modul (erhältlich ab
<http://www.fastcgi.com/> ) jedes Ihrer Perl-Programme wird zu einem permanenten CGI-Daemon


Schließlich ist Plack ein Perl-Modul und -Toolkit, das PSGI-Middleware, Helfer und
Adapter auf Webserver, sodass Sie problemlos Skripte bereitstellen können, die weiter ausgeführt werden können,
und bietet Flexibilität in Bezug auf den von Ihnen verwendeten Webserver. Es kann vorhandenes zulassen
CGI-Skripte, um diese Flexibilität und Leistung mit minimalen Änderungen zu genießen, oder können verwendet werden
zusammen mit modernen Perl-Webframeworks, um das Schreiben und Bereitstellen von Webdiensten mit Perl
ein Hauch.

Diese Lösungen können weitreichende Auswirkungen auf Ihr System und Ihre Schreibweise haben
CGI-Programme, also untersuchen Sie sie mit Sorgfalt.

Siehe auchhttp://www.cpan.org/modules/by-category/15_World_Wide_Web_HTML_HTTP_CGI/>.

Wie können. I verstecken die Quelle für my Perl Programm?
Lösche es. :-) Im Ernst, es gibt eine Reihe von (meist unbefriedigenden) Lösungen mit
unterschiedlicher "Sicherheitsstufe".

Zuallererst aber du kann nicht Leseberechtigung wegnehmen, weil der Quellcode muss
lesbar sein, um kompiliert und interpretiert zu werden. (Das bedeutet nicht, dass ein CGI
Die Quelle des Skripts ist jedoch für Personen im Web lesbar – nur für Personen mit Zugriff auf
das Dateisystem.) Sie müssen also die Berechtigungen beim sozialfreundlichen 0755 belassen
Ebene.

Manche Leute betrachten dies als ein Sicherheitsproblem. Wenn Ihr Programm unsichere Dinge tut und
auf Menschen angewiesen ist, die nicht wissen, wie man diese Unsicherheiten ausnutzt, es ist nicht sicher. es ist
oft möglich für jemanden, die unsicheren Dinge zu bestimmen und sie auszunutzen, ohne
die Quelle ansehen. Sicherheit durch Verborgenheit, der Name für das Verstecken von Fehlern statt
sie zu reparieren, ist in der Tat wenig Sicherheit.

Sie können versuchen, eine Verschlüsselung über Quellfilter zu verwenden (ab Perl 5.8 ist der Filter::Simple
und Filter::Util::Call-Module sind in der Standarddistribution enthalten), aber alle anständigen
Programmierer können es entschlüsseln. Sie können versuchen, den Bytecode-Compiler zu verwenden und
später in perlfaq3 beschriebener Interpreter, aber die Neugierigen können vielleicht noch dekompilieren
es. Sie können versuchen, den später beschriebenen Compiler für nativen Code zu verwenden, aber Cracker sind möglicherweise in der Lage
um es zu zerlegen. Diese stellen für Menschen, die zu erreichen möchten, unterschiedliche Schwierigkeitsgrade dar
Ihren Code, aber keiner kann ihn definitiv verbergen (gilt für jede Sprache, nicht nur für Perl).

Es ist sehr einfach, den Quellcode von Perl-Programmen wiederherzustellen. Sie füttern das Programm einfach an die
perl-Interpreter und verwenden Sie die Module in der B::-Hierarchie. Das B::Deparse-Modul sollte
in der Lage, die meisten Versuche, die Quelle zu verbergen, zu vereiteln. Auch dies gilt nicht nur für Perl.

Wenn Sie sich Sorgen machen, dass die Leute von Ihrem Code profitieren, dann ist das Fazit:
nichts als eine restriktive Lizenz gibt Ihnen Rechtssicherheit. Lizenzieren Sie Ihre Software und
würzen Sie es mit drohenden Aussagen wie "Dies ist unveröffentlichte proprietäre Software von
XYZ Corp. Ihr Zugriff darauf gibt Ihnen nicht die Erlaubnis, es zu verwenden bla bla bla." Wir
sind natürlich keine Anwälte, also sollten Sie einen Anwalt aufsuchen, wenn Sie sicher sein möchten, dass Sie
Der Wortlaut der Lizenz wird vor Gericht Bestand haben.

Wie können. I kompilieren my Perl Programm in Byte Code or C?
(Beigetragen von Brian d Foy)

Im Allgemeinen können Sie dies nicht tun. Es gibt einige Dinge, die für Ihre Situation funktionieren könnten
obwohl. Die Leute stellen diese Frage normalerweise, weil sie ihre Werke verbreiten möchten
ohne den Quellcode preiszugeben, und die meisten Lösungen tauschen Speicherplatz für Bequemlichkeit ein.
Sie werden wahrscheinlich auch keine große Geschwindigkeitssteigerung feststellen, da die meisten Lösungen einfach gebündelt werden
ein Perl-Interpreter im Endprodukt (aber siehe "Wie kann ich mein Perl-Programm ausführen"
Schneller?").

Das Perl Archive Toolkit (http://par.perl.org/> ) ist Perls Analogon zu Javas JAR. Es ist
frei verfügbar und auf CPAN (http://search.cpan.org/dist/PAR/>).

Es gibt auch einige kommerzielle Produkte, die für Sie funktionieren können, obwohl Sie sie kaufen müssen
Lizenz für sie.

Das Perl-Entwicklungskit (http://www.activestate.com/Products/Perl_Dev_Kit/> ) von ActiveState
kann "Ihre Perl-Programme in lauffertige ausführbare Dateien für HP-UX, Linux, Solaris und
Windows. "

Perl2Exe (http://www.indigostar.com/perl2exe.htm> ) ist ein Kommandozeilenprogramm für
Konvertieren von Perl-Skripten in ausführbare Dateien. Es zielt sowohl auf Windows- als auch auf Unix-Plattformen ab.

Wie können. I bekommen "#!perl" zu Arbeit on [MS-DOS, NT,...]?
Für OS/2 verwenden Sie einfach

extproc perl -S -your_switches

als erste Zeile in der Datei "*.cmd" ("-S" aufgrund eines Fehlers in der "extproc"-Behandlung von cmd.exe). Zum
DOS sollte man zunächst eine entsprechende Batch-Datei erfinden und in kodieren
"ALTERNATE_SHEBANG" (siehe dosish.h Datei in der Quelldistribution für mehr
Information).

Die Win95/NT-Installation ändert bei Verwendung des ActiveState-Ports von Perl die
Registry, um die Erweiterung ".pl" mit dem Perl-Interpreter zu verknüpfen. Wenn Sie installieren
ein anderer Port, vielleicht sogar Ihr eigenes Win95/NT-Perl aus den Standardquellen bauen von
einen Windows-Port von gcc verwenden (zB mit cygwin oder mingw32), dann müssen Sie die
Registrieren Sie sich. Zusätzlich zum Assoziieren von ".pl" mit dem Dolmetscher können NT-Leute
verwenden Sie: "SET PATHEXT=%PATHEXT%;.PL", um das Programm "install-linux.pl" einfach ausführen zu lassen
"install-linux" eingeben.

Unter "Classic" MacOS hat ein Perl-Programm den entsprechenden Creator und Type, so dass
ein Doppelklick darauf ruft die MacPerl-Anwendung auf. Unter Mac OS X anklickbare Apps
kann aus jedem "#!" Skript mit dem DropScript-Dienstprogramm von Wil Sanchez:
<http://www.wsanchez.net/software/>.

WICHTIG!: Was auch immer du tust, BITTE sei nicht frustriert und wirf einfach die Perle
Interpreter in Ihr cgi-bin-Verzeichnis, um Ihre Programme für ein Web zum Laufen zu bringen
Server. Dies ist ein EXTREM großes Sicherheitsrisiko. Nehmen Sie sich Zeit, um herauszufinden, wie es geht
korrekt.

Können I schreiben nützlich Perl Programme on die Befehl Linie?
Jawohl. Lesen Sie perlrun für weitere Informationen. Einige Beispiele folgen. (Diese gehen von Standard-Unix
Shell-Zitatregeln.)

# Summe erstes und letztes Feld
perl -lane 'print $F[0] + $F[-1]' *

# Textdateien identifizieren
perl -le 'for(@ARGV) {print if -f && -T _}' *

# (die meisten) Kommentare aus dem C-Programm entfernen
perl -0777 -pe 's{/\*.*?\*/}{}gs' foo.c

# Datei einen Monat jünger als heute erstellen, Schnitter-Dämonen besiegen
perl -e '$X=24*60*60; utime(time(),time() + 30 * $X,@ARGV)' *

# Erste ungenutzte UID finden
perl -le '$i++ while getpwuid($i); drucke $i'

# vernünftigen Manpath anzeigen
echo $PFAD | perl -nl -072 -e '
s![^/+]*$!man!&&-d&&!$s{$_}++&&push@m,$_;END{print"@m"}'

OK, der letzte war eigentlich ein Beitrag zum Obfuscated Perl Contest. :-)

Warum nicht Perl Einzeiler Arbeit on my DOS/Mac/VMS System?
Das Problem ist normalerweise, dass die Befehlsinterpreter auf diesen Systemen eher
andere Ideen zum Zitieren als die Unix-Shells, unter denen die Einzeiler standen
erstellt. Auf einigen Systemen müssen Sie möglicherweise einfache Anführungszeichen in doppelte Anführungszeichen ändern
sollen NICHT tun auf Unix- oder Plan9-Systemen. Möglicherweise müssen Sie auch ein einzelnes % in ein %% ändern.

Beispielsweise:

# Unix (einschließlich Mac OS X)
perl -e 'print "Hallo Welt\n"'

#DOS usw.
perl -e "print \"Hallo Welt\n\""

# Mac-Klassiker
print "Hallo Welt\n"
(dann "Myscript" ausführen oder Umschalt-Befehl-R)

#MPW
perl -e 'print "Hallo Welt\n"'

# VMS
perl -e "print ""Hallo Welt\n"""

Das Problem ist, dass keines dieser Beispiele zuverlässig ist: Sie hängen vom Befehl ab
Dolmetscher. Unter Unix funktionieren die ersten beiden oft. Unter DOS ist das durchaus möglich
beides funktioniert nicht. Wenn 4DOS die Befehlsshell wäre, hätten Sie wahrscheinlich mehr Glück wie folgt:

perl -e "drucken" "Hallo Welt\n ""

Unter dem Mac hängt es davon ab, welche Umgebung Sie verwenden. Die MacPerl-Shell oder MPW ist
ähnlich wie Unix-Shells in ihrer Unterstützung für mehrere Zitierungsvarianten, außer dass es
freie Verwendung der Nicht-ASCII-Zeichen des Mac als Steuerzeichen.

Die richtigen qq(), q() und qx(), statt "doppelte Anführungszeichen", "einzelne Anführungszeichen" und "Backticks",
kann das Schreiben von Einzeilern erleichtern.

Für all das gibt es keine allgemeine Lösung. Es ist ein Chaos.

[Ein Teil dieser Antwort wurde von Kenneth Albanowski beigesteuert.]

COHO Expo bei der können. I lernen Über mich CGI or Web Programmierung in Perle?
Für Module erhalten Sie die CGI- oder LWP-Module von CPAN. Für Lehrbücher siehe die beiden besonders
Web-Sachen in der Frage nach Büchern gewidmet. Bei Problemen und Fragen rund um die
web, wie "Warum erhalte ich 500 Fehler" oder "Warum wird es nicht sofort vom Browser ausgeführt, wenn es
läuft auf der Befehlszeile einwandfrei", siehe die Anleitungen und Referenzen zur Fehlerbehebung in perlfaq9
oder in der CGI-MetaFAQ:

L<http://www.perl.org/CGI_MetaFAQ.html>

Ein Blick in Plack und moderne Perl-Web-Frameworks wird jedoch dringend empfohlen; Netz
Die Programmierung in Perl hat sich weit von den alten Tagen einfacher CGI-Skripte entwickelt.

COHO Expo bei der können. I lernen Über mich objektorientiert Perl Programmierung?
Ein guter Ausgangspunkt ist perlootut, und Sie können perlobj als Referenz verwenden.

Ein gutes Buch über OO on Perl ist das "Object-Oriented Perl" von Damian Conway von Manning
Veröffentlichungen oder "Intermediate Perl" von Randal Schwartz, Brian d Foy und Tom Phoenix von
O'Reilly-Medien.

COHO Expo bei der können. I lernen Über mich Linking C mit Perle?
Wenn Sie C aus Perl aufrufen möchten, beginnen Sie mit perlxstut und fahren Sie dann mit perlxs, xsubpp und . fort
Perlmutt. Wenn Sie Perl von C aus aufrufen möchten, lesen Sie perlembed, perlcall und perlguts.
Vergiss nicht, dass du viel lernen kannst, wenn du dir ansiehst, wie die Autoren existierender
Erweiterungsmodule schrieben ihren Code und lösten ihre Probleme.

Möglicherweise benötigen Sie nicht die gesamte Leistung von XS. Mit dem Inline::C-Modul können Sie C-Code direkt einfügen
in Ihrer Perl-Quelle. Es beherrscht die ganze Magie, damit es funktioniert. Du musst noch lernen bei
zumindest einen Teil der Perl-API, aber Sie müssen sich nicht mit der Komplexität von XS auseinandersetzen
Support-Dateien.

Ich habe besuch perlenbesetzt, Perlgut, ETC. aber I kann nicht verankern perl in my C Programm; was am I Dabei
falsch?
Laden Sie das ExtUtils::Embed-Kit von CPAN herunter und führen Sie `make test' aus. Wenn die Tests bestehen, lesen Sie
die Schoten immer und immer wieder. Wenn sie fehlschlagen, sehen Sie sich perbug an und senden Sie einen Fehlerbericht mit
die Ausgabe von "make test TEST_VERBOSE=1" zusammen mit "perl -V".

Wann I versucht zu Lauf my Skript, I habe fehlen uns die Worte. Nachricht. Was die it bedeuten?
Eine vollständige Liste der Fehlermeldungen und Warnungen von Perl mit erklärendem Text finden Sie
im perldiag. Sie können auch das splain-Programm (mit Perl verteilt) verwenden, um die
Fehlermeldungen:

Perl-Programm 2>diag.out
splain [-v] [-p] diag.out

oder ändern Sie Ihr Programm, um die Nachrichten für Sie zu erklären:

Diagnose verwenden;

or

Diagnose verwenden -ausführlich;

Was ist Hersteller?
(Beigetragen von Brian d Foy)

Das ExtUtils::MakeMaker-Modul, besser bekannt als "MakeMaker", verwandelt ein Perl-Skript,
normalerweise "Makefile.PL" genannt, in ein Makefile. Das Unix-Tool "make" verwendet diese Datei, um
Abhängigkeiten und Aktionen verwalten, um eine Perl-Distribution zu verarbeiten und zu installieren.

AUTOR UND URHEBERRECHT


Copyright (c) 1997-2010 Tom Christiansen, Nathan Torkington und andere Autoren wie angegeben.
Alle Rechte vorbehalten.

Diese Dokumentation ist kostenlos; Sie können es unter den gleichen Bedingungen weitergeben und/oder ändern
als Perl selbst.

Unabhängig von ihrer Verbreitung sind alle Codebeispiele hier gemeinfrei. Sie sind
erlaubt und ermutigt, diesen Code und alle Derivate davon in Ihren eigenen Programmen zu verwenden
zum Spaß oder zum Profit, wie Sie es für richtig halten. Ein einfacher Kommentar im Code, der dem würdigt
FAQ wäre höflich, aber nicht erforderlich.

Verwenden Sie perlfaq3 online mit den onworks.net-Diensten


Kostenlose Server & Workstations

Laden Sie Windows- und Linux-Apps herunter

Linux-Befehle

Ad




×
Werbung
❤ ️Hier einkaufen, buchen oder kaufen – kostenlos, damit die Dienste kostenlos bleiben.