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/CGI]Problem mit perl -w und CGI

Empfohlene Antworten

Veröffentlicht

Hallo,

ich bin gerade dabei zu versuchen mir ein kleines Mailscript zu schreiben, was mir Mails anzeigt. Nun habe ich zwei sehr merkwürdige Phänomene. Hier erstmal das Script:


#!/usr/bin/perl -w

use CGI::Carp qw(fatalsToBrowser);

use CGI qw(:standard);

use strict;


use vars qw($destination_mail $file $mail $path $q $source_mail $subject

			@filelist @maillist);


# Path to the maildirectory

$path = "/home/benutzer/Maildir/new";


# open directory and read filenames

opendir(DIR, $path);

while($file = readdir(DIR)) {

	next if($file eq '.' || $file eq '..');

	push(@filelist,$file);

}

closedir(DIR);


# open and save mailfiles in array

for (@filelist) {

	open MAIL, "<$path/$_"

		or die "Kann Mailfile $_ nicht öffnen: $!";

	while (<MAIL>) {

		$mail .= $_;

	}

	close MAIL;

	push(@maillist,$mail);

}


# HTML Output

print header;

      start_html('Mailtest');


if(@maillist) {

	for (@maillist) {

		($source_mail) = /From:\s(.*)/;

		($destination_mail) = /To:\s(.*)/;

		($subject) = /Subject:\s(.*)/;

	}

	print

		"<b>Von: </b>$source_mail<br>\n",

		"<b>An: </b>$destination_mail<br>\n",

		"<b>Betreff: </b>$subject<br>\n",

		"<br><br>\n";

} else {

	print "Keine neuen Mails vorhanden!<br>";

}


print end_html;

Nun das 1. komische Ding:

Wenn ich das Script so im Browser abrufe "funktioniert" es (also nicht korrekt aber das siehe 2. Problem). Wenn ich allerdings statt perl -w nur perl mache, dann bekomme ich im Browser nen Internal Error und auf der Konsole sagt er mir ..:Command not found. Ich habe solch ein Problem noch nie gehabt, zumal andere Scripte ganz normal nur mir #!/usr/bin/perl ja auch laufen. Hat jemand eine Idee woran das liegen kann?

Das 2. komische Ding:

Wenn ich die CGI Sachen wie header, start_html usw. aus dem Script entferne (weil mit ihnen ja immer: (offline mode: enter name=value pairs on standard input) auf der Konsole kommt) und auf der Konsole starte, dann funktioniert es einwandfrei. Es stehen also in Felder "Von.." usw. die richtigen Sachen und er hat damit die Mail auch eingelesen. Wenn ich es aber im Browser aufrufe geht er in den elsezweig und zeigt mir an "Keine neuen Mails vorhanden!", obwohl ja nachweislich welche da sind. Er dreht es irgendwie genau um. Woran kann das liegen?

Ich bin für jeglichen Tip dankbar (auch Anregungen, wie ich es einfacher oder besser programmieren kann nehme ich gern an!)!

mfg

Das Problem mit dem perl und dem perl -w hat sich erledigt. Leider hat das FTP Programm scheinbar falsch übertragen und die ganzen DOS ^M an jede Zeile gehängt. Damit kam perl dann scheinbar nicht mehr klar.

Nun funktioniert es auch mit #!/usr/bin/perl. Das Problem mit den ansyncronen Ausgaben besteht aber weiterhin. :(

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.