Öffnen Sie den Dialog mit einer reinen Perl-Version

8

Ich habe eine nackte Installation von Perl, und ich möchte ein Dialogfeld erstellen, das nach einem Speicherort für Dateien und / oder Ordner fragt, in dem das Skript ausgeführt werden kann.

Dies ist mein Arbeitscomputer und ich benötigte die Erlaubnis, Perl zu installieren - IT ignorierte meine Anfrage (sie verweigerte sie nicht). Ich habe zufällig eine abgespeckte Version von Perl gefunden, die mit einem anderen Programm installiert wurde. Es hatte genau 3 Module und ich fügte Strenge und Warnungen hinzu.

Ich verstehe, dass es Module dafür gibt (TK ist am beliebtesten), aber sie sind abhängig von anderen Modulen (AutoLoader, DynaLoader, ...), die wahrscheinlich von anderen abhängig sind. Schleichen zwei Module in war eine Sache ... schleichen ein Dutzend + ist ein anderer.

Bearbeiten (von unten) : Eine weitere Komplikation. Meine direkten Teammitglieder benutzen meine Skripte und alle haben die Perl-Installation von Perl, weil sie alle das Eltern-Programm haben. Das erste Mal, wenn jemand eines meiner Perl-Skripte benutzt, stelle ich die Dateizuordnung ein und füge strikte und Warnungen hinzu (damit ich mich nicht daran erinnern muss, sie zu kommentieren). Also - ich möchte ein Setup so einfach wie möglich halten.

Alle meine Skripte werden derzeit in dem Ordner ausgeführt, in dem sie sich befinden. Dies wird aufgrund von Änderungen in den Skripten im Laufe der Zeit unhandlich. Mein aktueller Plan ist es, eine Eingabeaufforderung in der Befehlszeile zu verwenden - der Benutzer muss den Dateipfad vom Windows Explorer kopieren und dann mit Regex analysieren. Ich sehe ein paar Probleme damit:

  • Das Einfügen in eine Eingabeaufforderung ist ärgerlich
  • Vorsicht beim Überqueren von Netzlaufwerken (C & gt; G & gt; N)
  • Leerzeichen / seltsame Zeichen / Schrägstriche auf dem richtigen Weg
  • Sicherstellen, dass das Skript am "neuen" Eingabeport
  • funktioniert

Dies scheint machbar, aber ich wollte sehen, ob es eine freundlichere Möglichkeit geben würde, dies zu tun (vor allem, um die Eingabeaufforderung zu umgehen, um Ärger zu vermeiden).

Hoffentlich ist die Frage für dieses Forum nicht zu weit gefasst - wenn nicht, werde ich später mit einem versuchten Code zurückkommen.

Betriebssystem: Windows 7 Professional (64-Bit)

Perl: ActiveState Version 5.6.0 (heruntergeladen am 21. Februar 2001)

Derzeit verfügbare Module: Exporteur, RE, utf8, strict & amp; Warnungen. Im Allgemeinen funktioniert das gut genug, da ich normalerweise nur Dateimanipulationen durchführe.

    
LadyCygnus 29.04.2014, 18:09
quelle

4 Antworten

3

Sie werden nicht viel aus einer 13 Jahre alten Version von Perl herausholen, die nicht einmal alle 5,6 Module enthält. Ist das vielleicht ein Rational-Paket, das diese Perl-Version installiert hat? Wenn es ClearCase ist, gibt es ein Programm namens clearprompt . Sie können das versuchen.

Ich weiß, dass dies nicht das ist, was Sie hier wollen, aber vergessen Sie Perl und versuchen Sie es in PowerShell .

PowerShell ist eine nicht verwendete Programmiersprache, die von Microsoft speziell für Windows erstellt wurde. Es ist eine vollständige Programmiersprache, die eng mit Windows integriert ist. Es ist sehr objektorientiert. Es kann Dialogfelder anzeigen vor allem, es kommt auf allen Windows-Rechnern seit Windows XP. Wenn Sie also eine PowerShell-Anwendung schreiben, können alle Ihre Kollegen sie verwenden.

Mein gesamtes Powershell-Erlebnis besteht aus drei Programmen. Ich arbeite normalerweise in Unix / Linux-Umgebungen und hauptsächlich auf der Serverseite. Wir hatten jedoch einen Client, der ein spezielles Skript zur Überwachung einiger Prozesse und zur E-Mail-Unterstützung benötigte, wenn diese Prozesse nicht in bestimmten Zeitrahmen aktualisiert wurden.

In Perl wäre das ein Kinderspiel, aber sie hatten weder Perl noch Python und mir wurde gesagt, dass auf diesen Systemen nichts installiert werden kann. Ich musste alle Werkzeuge verwenden, die bereits vorhanden waren, also war meine einzige Wahl PowerShell.

Am Ende funktionierte Powershell ziemlich gut und es war nicht so schwer, es aufzunehmen. Mein Hauptproblem ist, dass alles, was ich finden konnte, PowerShell 2-Dokumentation war, aber die Server, auf denen das Skript ausgeführt werden musste, verwendeten PowerShell 1. Noch schlimmer, mein System hat PowerShell 2, also würde ich ein Skript auf meinem System ausführen und es dann finden hat nicht am System des Kunden gearbeitet. Allerdings habe ich PowerShell in den Griff bekommen und das Programm immer noch pünktlich an den Kunden geliefert.

Wenn Sie VB kennen, sollte die PowerShell-Syntax ziemlich vertraut sein, aber selbst wenn Sie mit VB nicht vertraut sind, sollten Sie keine Probleme haben, die Syntax zu übernehmen, wenn Sie eine objektorientierte Programmierung durchgeführt haben. So sehr ich auch in Perl programmieren möchte, Sie befinden sich in einer Umgebung, die sehr begrenzt ist. Nutzen Sie auch die Tools, die Ihnen die Umgebung bietet.

    
David W. 29.04.2014, 22:59
quelle
1

Sehen Sie sich PAR::Packer an. Es wird Ihnen ermöglichen, eigenständige ausführbare Dateien aus Perl-Programmen zu erstellen.

Vielleicht macht es die Tatsache, dass alle Module, die Sie verwenden, isoliert zu dieser einzelnen ausführbaren Datei und nicht systemweit verfügbar ist, für die IT einfacher, eine allgemeine Genehmigung für Ihr spezifisches Skript zu erteilen.

    
Miller 29.04.2014 18:43
quelle
0

Ein abgespecktes Perl 5.6 wird nicht das haben, was Sie erreichen wollen, um Ihr Ziel zu erreichen. Ihre einzige Option für Perl 5.6 wäre, eine GUI-Bibliothek auszuwählen, die Sie bereits installiert haben (oder native WinForms), und manuell eine reine Perl-Schnittstelle für ihre API zu programmieren.

Sie können eine portable Version einer Programmiersprache verwenden, in der Sie mehr Kontrolle haben, aber ich würde niemals empfehlen, gegen Ihre I.T. Mannschaft. Sie sollten zusammenarbeiten.

Wenn Sie mit Windows 7 arbeiten, sehen Sie sich PowerShell an. Es sollte viel mehr native Funktionalität haben, um Ihr Ziel zu erreichen.

    
Casao 29.04.2014 21:44
quelle
0

Sie können Zenity oder Wenity . Zenity ist ein kleines Befehlszeilenprogramm, das ein GUI-Dialogfeld anzeigt, mit dem der Benutzer interagieren kann, und nachdem es "OK" gedrückt hat, druckt es seine Antwort auf STDOUT. Obwohl Zenity selbst in der Regel unter Windows ausgeführt werden kann, ist es nicht nativ und hat nicht das normale Windows-Erscheinungsbild. Wenity ist mein loser Port von Zenity zu Windows und .NET, als kleine, eigenständige, zero-install .exe-Datei.

Sie können ein Dialogfeld zum Öffnen einer Datei ungefähr wie folgt anzeigen:

%Vor%

Wenigkeit sollte ungefähr gleich funktionieren.

    
tobyink 30.04.2014 08:36
quelle

Tags und Links