perl

Perl ist eine prozedurale, allgemeine Programmiersprache für allgemeine Zwecke, die für ihre native Unterstützung von regulären Ausdrücken und String-Parsing-Funktionen bekannt ist. Bitte verwenden Sie diesen Tag für Fragen zu Perl im Allgemeinen. Für Dinge, die mit der neuen (aber verwandten) Sprache "Perl 6" zu tun haben, verwenden Sie bitte das perl6-Tag. Verwenden Sie für reguläre Ausdrücke nach Perl-Art in anderen Sprachen das Regex-Tag oder, falls sie auf der PCRE-Bibliothek basieren, das PCRE-Tag.
6
Antworten

Schrumpft ein Hash in Perl, wenn Sie Elemente löschen?

Schrumpft Hash beim Löschen von Elementen in Perl? Genauer gesagt hatte ich ein Perl-Programm, das ich geerbt hatte, das eine riesige Datei (1 GB) analysieren und einen Hash von Hashes laden würde. Für eine andere Datei würde es dasselbe tun...
24.09.2008, 23:03
6
Antworten

Ist es überall in der Dokumentation garantiert, dass Hashes mit gleichen Schlüsseln auch dieselbe Reihenfolge haben?

Es gibt nicht viele Garantien über die Reihenfolge der Hash-Schlüssel in Perl. Gibt es eine Erwähnung in Dokumenten, die ich nicht finden kann, die sagen würde, dass, solange zwei Hashes genau dieselben Schlüssel verwenden, sie in genau derselbe...
04.10.2012, 09:18
7
Antworten

Welche Shell verwendet ein Aufruf von Perl system ()?

Ich verwende einen Systemaufruf, um einige Aufgaben zu erledigen %Vor% aber es klagt über fehlende Umgebungsvariablen. Diese Umgebungsvariablen werden auf meine Bash-Shell gesetzt (von wo aus ich den Perl-Code ausführe). Was mache ich fal...
19.11.2010, 12:45
4
Antworten

Wie kann ich Perl-Subroutinen inline machen?

Ich lese gerade Code Complete 2 , und einer der erwähnten Punkte bezieht sich auf das Erstellen von Unterprogrammen sogar für Operationen, die zu einfach erscheinen, um ihre eigenen Subroutinen zu haben, und wie das hilfreich sein kann. Ic...
02.11.2010, 11:30
3
Antworten

Warum funktioniert mein Perl-Einzeiler nicht unter Windows?

Von der Windows-Eingabeaufforderung erzeuge ich eine Textdatei aller Dateien in einem Verzeichnis: %Vor% Ausgabe: %Vor% Ich muss die Datei "config.txt" an eine andere ausführbare Datei füttern, aber bevor ich das tue, muss ich die Datei...
19.03.2009, 00:30
6
Antworten

___ qstntxt ___

Ich habe ein Perl-Skript, das eine Verzeichnishierarchie mit File :: Next :: files durchläuft. Es wird nur zu den Skriptdateien zurückkehren, die auf ".avi", ".flv", ".mp3", ".mp4" und ".wmv" enden. Außerdem werden die folgenden Unterverzeichnisse übersprungen: ".svn" und jedes Unterverzeichnis, das auf ".frames" endet. Dies wird in den Unterroutinen %code% und %code% unten angegeben.

%Vor%

Ich möchte die erlaubten Dateierweiterungen und nicht erlaubten Unterverzeichnisnamen in einer Konfigurationsdatei platzieren, damit sie im laufenden Betrieb aktualisiert werden können.

Was ich wissen möchte ist, wie ich die Subroutinen zum Erstellen von Regex-Konstrukten basierend auf den Parametern in der Konfigurationsdatei codiere?

%Vor%     
___ answer902884 ___

Es ist ziemlich einfach mit File :: Find :: Rule, nur ein Fall der Erstellung der Liste vor Hand.

%Vor%

Dann ist es nur ein Fall, diese Arrays zu füllen. (Hinweis: Der obige Code ist ebenfalls nicht getestet, wird aber wahrscheinlich funktionieren). Normalerweise benutze ich dafür YAML, das macht das Leben einfacher.

%Vor%

Hinweis Verwenden Sie das praktische Modul 'aliased.pm', das "File :: Find :: Rule" für mich als "Rule" importiert.

___ answer904558 ___

Wenn Sie eine potentiell große Regexp erstellen möchten und Sie nicht wollen, die Klammern zu debuggen, verwenden Sie ein Perl-Modul, um es für Sie zu erstellen!

%Vor%     
___ answer910597 ___

Obwohl File :: Find :: Rule bereits Möglichkeiten hat, sich damit zu befassen, möchten Sie in ähnlichen Fällen nicht wirklich eine Regex. Die Regex kauft dir hier nicht viel, weil du am Ende jedes Dateinamens nach einer festen Zeichenfolge suchst. Sie möchten wissen, ob sich diese feste Sequenz in einer Liste von Sequenzen befindet, die Sie interessieren. Speichern Sie alle Erweiterungen in einem Hash und suchen Sie in diesem Hash:

%Vor%

Sie müssen keinen regulären Ausdruck erstellen, und Sie müssen nicht mehrere mögliche Regex-Änderungen durchgehen, um jede Erweiterung zu überprüfen, die Sie untersuchen müssen.

    
___ answer899161 ___

Erstellen Sie es wie eine normale Zeichenfolge und verwenden Sie dann am Ende die Interpolation, um es in eine kompilierte Regex umzuwandeln. Sei auch vorsichtig, du entkommst nicht. oder es in eine Zeichenklasse einfügen, also jedes Zeichen (statt einer buchstäblichen Periode).

%Vor%     
___ tag123regex ___ Reguläre Ausdrücke stellen eine deklarative Sprache zur Verfügung, um Muster in Strings zu vergleichen. Sie werden häufig für die Überprüfung, Analyse und Umwandlung von Zeichenfolgen verwendet. Da reguläre Ausdrücke nicht vollständig standardisiert sind, sollten alle Fragen mit diesem Tag auch ein Tag enthalten, das die anwendbare Programmiersprache oder das entsprechende Werkzeug angibt. HINWEIS: Nach HTML-, JSON-, usw.-Regexen zu fragen, neigt zu negativen Reaktionen. Wenn es einen Parser dafür gibt, verwende stattdessen diesen. ___ tag123perl ___ Perl ist eine prozedurale, allgemeine Programmiersprache für allgemeine Zwecke, die für ihre native Unterstützung von regulären Ausdrücken und String-Parsing-Funktionen bekannt ist. Bitte verwenden Sie diesen Tag für Fragen zu Perl im Allgemeinen. Für Dinge, die mit der neuen (aber verwandten) Sprache "Perl 6" zu tun haben, verwenden Sie bitte das perl6-Tag. Verwenden Sie für reguläre Ausdrücke nach Perl-Art in anderen Sprachen das Regex-Tag oder, falls sie auf der PCRE-Bibliothek basieren, das PCRE-Tag. ___ tag123configuration ___ Konfiguration ist die Festlegung der Einstellungen für ein System oder eine Anwendung ___ answer898675 ___

Wenn Sie davon ausgehen, dass Sie die Konfigurationsdatei analysiert haben, um eine Liste von Erweiterungen und ignorierten Verzeichnissen zu erhalten, können Sie den regulären Ausdruck als Zeichenfolge erstellen und dann mit dem Operator %code% in einen regulären Ausdruck kompilieren:

%Vor%

Die Zusammenstellung ist nicht unbedingt notwendig; Sie können das Zeichenfolgenmuster direkt verwenden:

%Vor%

Verzeichnisse sind ein wenig schwieriger, weil Sie zwei verschiedene Situationen haben: vollständige Namen und Suffixe. Ihre Konfigurationsdatei muss verschiedene Schlüssel verwenden, um deutlich zu machen, welches was ist. z.B. "dir_name" und "dir_suffix" Für vollständige Namen würde ich nur einen Hash erstellen:

%Vor%

Suffixed Verzeichnisse können wie Dateierweiterungen erfolgen:

%Vor%

Sie könnten die Muster sogar in anonyme Unterprogramme einbauen, um zu vermeiden, dass globale Variablen referenziert werden:

%Vor%     
___ answer899051 ___

Sagen wir, dass Sie Config :: General für Ihre Konfigurationsdatei verwenden und diese Zeilen enthält :

%Vor%

Sie könnten es dann so verwenden (siehe Config :: General für mehr):

%Vor%

(Dies ist vollständig nicht getestet.)

    
___

Ich habe ein Perl-Skript, das eine Verzeichnishierarchie mit File :: Next :: files durchläuft. Es wird nur zu den Skriptdateien zurückkehren, die auf ".avi", ".flv", ".mp3", ".mp4" und ".wmv" enden. Außerdem werden die folgenden Unterverzeichnis...
22.05.2009, 15:55
6
Antworten

Wie schreibe ich ein Perl-, Python- oder Ruby-Programm, um den Speicher eines anderen Prozesses unter Windows zu ändern?

Ich frage mich, ob Perl, Python oder Ruby verwendet werden kann, um ein Programm so zu schreiben, dass es nach 0x12345678 im Speicher eines anderen Prozesses sucht (wahrscheinlich der Heap für Daten und Codedaten) und dann, wenn es gefunden wird...
18.06.2009, 16:45
7
Antworten

Wie überprüft man, ob die Variable in Perl deklariert ist?

Ich benutze use strict; in Perl und damit benutze ich die folgende Anweisung. %Vor% Wo $ x nirgendwo deklariert ist. Also erwarte ich, dass es " Not defined " ausgibt, aber es gibt einen Fehler zurück %Vor%     
21.08.2010, 11:00
8
Antworten

für mehrere Arrays

Im Schema können Sie mit for-each : über mehrere Listen in iterieren %Vor% Ich weiß, dass Sie in Perl for verwenden können, um über eine einzelne Liste zu iterieren. Was ist ein guter Weg, um mehrere Listen wie im Beispielschema zu durc...
10.06.2011, 00:11
4
Antworten

Woher weiß ich, ob ein System eingeschaltet ist?

Ich schreibe ein Skript, das ein System über das Netzwerk antreibt. Und dann muss ich ein paar Befehle auf dem anderen Host ausführen. Woher weiß ich, ob das System eingeschaltet ist? Meine Programmiersprache ist Perl und der Zielhost ist RHE...
13.10.2008, 14:15