Diese Woche gibt es noch eine Coverversion, diesmal bearbeitet Udo Dirkschneider Queens “We Will Rock You”. Keine Ahnung, ob die Version auch ohne Video Spaß machen würde, so ist sie aber Dank einer gewaltigen Portion Humor (und Hommage) auf jeden Fall sehens- und hörenswert.
Die im Beitrag “MIME::Lite Fehlerbehandlung” implementierte Fehlerbehandlung mit “eval” funktioniert zwar in den meisten Fällen, kann aber in bestimmten Situationen doch nicht zum gewünschten Ergebnis führen.
Eine bessere Alternative ist die Verwendung von z.B. Try::Tiny, welches sich mit den aus anderen Sprachen bekannten “try”, “catch” und “finally”-Anweisungen um die Fehlerbehandlung kümmert:
use strict;
use warnings;
use MIME::Lite;
use Try::Tiny;
MIME::Lite->send('smtp', 'mailserver', Debug => 0);
my $msg = MIME::Lite->new(
From => 'me@whereever.net',
To => 'you@somewhereelse.net',
Data => 'Hello World!',
Subject => 'testmail',
);
try {
$msg->send;
}
catch {
warn "you DON'T have mail!";
};
print "... still running ...";
Nach der Warnung “you DON’T have mail!” wird das Programm mit “… still running …” fortgesetzt.
Ein Skript, welches MIME::Lite zum Versenden von Mails verwendet, hat sich im Fehlerfall lieber direkt mit einem “SMTP Failed to connect to mail server: Bad file descriptor” beendet, statt gemäß Dokumentation auf den Fehler zu reagieren.
use strict;
use warnings;
use MIME::Lite;
MIME::Lite->send('smtp', 'mailserver', Debug => 0);
my $msg = MIME::Lite->new(
From => 'me@whereever.net',
To => 'you@somewhereelse.net',
Data => 'Hello World!',
Subject => 'testmail',
);
$msg->send || die "you DON'T have mail!";
print "... still running ...";
Weder “you DON’T have mail!” noch “… still running …” werden ausgegeben, da diese Stellen im Code auf Grund des Programmabbruchs nicht mehr erreicht werden.
Leider ist die Erläuterung zum Verhalten der Funktion “$msg->send” nicht wirklich hilfreich:
Returns whatever the mail-handling routine returns: this should be true on success, false/exception on error.
Eine Suche im Internet führte zum Blogbeitrag “Perl exception handling”, welcher genau das aufgetretene Verhalten beschreibt und eine Lösungsmöglichkeit mittels “eval” aufzeigt:
use strict;
use warnings;
use MIME::Lite;
MIME::Lite->send('smtp', 'mailserver', Debug => 0);
my $msg = MIME::Lite->new(
From => 'me@whereever.net',
To => 'you@somewhereelse.net',
Data => 'Hello World!',
Subject => 'testmail',
);
eval { $msg->send; };
if ($@) {
print "you DON'T have mail!";
}
print "... still running ...";
So gekapselt läuft das Skript auch nach einem gescheiterten “$msg->send” weiter und auf einen eventuellen Fehler kann reagiert werden.
Am 7. April machte überraschend die Nachricht die Runde, daß Pink Floyd eine neue Single veröffentlichen.
Auf der Basis eines Instragram-Videos des Boombox-Frontmans Andriy Khlyvnyuk haben David Gilmour und Nick Mason mit der Hilfe von Guy Pratt und Nitin Sawhney einen Charity-Song eingespielt und entschieden, diesen unter dem Banner “Pink Floyd” zu veröffentlichen. Die Entstehunggeschichte und Hintergründe erläutert David Gilmour im Artikel “‘This is a crazy, unjust attack’: Pink Floyd re-form to support Ukraine” des “The Guardian”.
Musikalisch ist “Hey Hey Rise Up” sicherlich nicht der stärkste und interessanteste Song, den Pink Floyd je veröffentlicht haben - aber darum geht es auch nicht. Es geht vielmehr darum, ein wichtiges Zeichen gegen Krieg und für Frieden und Solidarität zu setzen.
