[Perl-CGI] Ausgabe eines Skripts im Browser


Igor1312

Mitglied
Hi,

ich habe ein Perl-Script, welches Email bei verschiedenen POP3 Accounts abholt. Falls dabei was schiefläuft, zeit das Script es an. Normalerweise wird das Ding per Cron aufgerufen.

Nun möchte ich das zwischendurch manuell starten und zwar über einen Browser.
Ich habe ein weiteres Perl Script erstellt, welches lediglich das mailholen.pl aufruft und die Ausgabe dessen mit print() ausgibt:

Code:
#!/usr/bin/perl -w
# --

use strict;
use warnings;
use CGI;

print "content-type: text/html\n\n";
print "<html><body>\n";

my $output = `/usr/bin/perl mailholen.pl`;
print "$output";

print "\n</body></html>";

Nun das Problem:
Die Ausgabe von mailholen.pl erscheint unformatiert im Browser, ohne Zeilenumbrüche.
Im Skript selbst werden print "...\n"; Kommandos benutzt und in der Shell funktionierts auch.

Wie kriege ich das denn ordenrlich formatiert hin?
Danke!

Tschö,
Igor
 

Dr Dau

ich wisch hier durch
Hallo!

Das Problem ist dass ein Browser keine Shell ist. ;)
Wenn Du Dir im Browser den ausgegebenen Quelltext ansiehst, sollten dort eigentlich die Zeilenumbrüche vorhanden sein.
Damit diese auch im Browserfenster sichtbar sind, musst Du (X)HTML-Zeilenumbrüche verwenden.
Ändere \n für HTML also in <br>\n oder für XHTML in <br />\n.
Quelle: SelfHTML - erzwungener Zeilenumbruch

Gruss Dr Dau

[edit]
In PHP gibt es dazu die Funktion nl2br(), leider gibt es diese nicht in Perl.
Es gibt aber Ansätze wie man die Zeilenumbrüche trotzdem in Perl realisieren kann.
Damit würdest Du Dir das lästige umschreiben Deines Scripts ersparen.
Siehe Google: perl nl2br
[/edit]
 
Zuletzt bearbeitet: