Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[PERL] Perl QX(...) über CGI

Empfohlene Antworten

Veröffentlicht

hi,

für ein Projekt möchte ich eine Java-Anwendung über CGI ansteuern.

Da das scheinbar nicht so einfach geht, habe ich ein Perl-SCript geschrieben das mir über qx(...) das JAva aufruft und die Rückgabe ausgeben soll.

Aus laufzeitumgebung habe ich hier einen XAMPP auf einem Windows-XP System.

Rufe ich das Perl-Script über die WIndows-Console auf, keni Problem. Wird auch das Java gestartet und die Rückgabe kommt raus. Allerdings scheint es so, als ob Java "nach" dem Perl-Script gestartet wird. Also alle perl outputs sind vor den JAva-Outputs.

Mache ich das ganze über den Browser und CGI, so bekomme ich nur den Aufruf bis zur qx(..) Zeile. Alles danach ist weg.

hier das Script:

#!H:\xampp\perl\bin\perl.exe


print "Content-type: text/html\n\n";

print "<html>";

print "test";

$output = qx(java -cp h:/xampp/cgi-bin/ Quadrat) || die "Datei nicht gefunden";

print "test";

print $output;

irgend eine Idee, wie ich das hinkriegen könnte ?

irgend eine Idee, wie ich das hinkriegen könnte ?

Fehlt da nicht ein use [...]; oder require [...];? Das würde erklären, warum die qx-Zeile nicht ausgeführt wird. Naja, dass das Teil über die Konsole anspringt, ist noch ein wenig verwunderlich.

Bei solchen Fällen empfiehlt sich für die Entwicklung ein

use CGI::Carp qw(fatalsToBrowser);

am Anfang (müsste auf XAMPP auch gehen) oder schlimmstenfalls ein Blick ins Apache error.log, siehe \Apache\logs\error.log. Da dürfte meistens ein Hinweis zu finden sein, warum das Prg hier absemmelt.

Quatsch, ist doch viel naheliegender... Auf der Konsole wird java (das Programm javac.exe oder wie es heisst) gefunden, weils im DOS-Path liegt, über den Apache wirds nicht gefunden, weil der Path keine Rolle spielen sollte.

Nur so eine Idee von mir... ob da was dran ist?

erste Tests zeigen das du recht haben könntest ^^

gebe ich den absoluten Pfad zur java.exe an, geht es auch über CGI. Was ich jetzt noch testen muss ist die Frage der Reihenfolge der Ausgaben.

aus irgend einem Grund sind Java-Ausgaben immer nach allen Perl Ausgaben, auch wenn das print nach dem qx steht. Aber gut, das ist mir egal :)

Als nächstes muss ich rausfinden wie ich Parameter (GET, POST etz) die aus HTML kommen könnten über Perl in java kriege.....das dürfte aber nicht sooo das Problem sein.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.