anaboe.net

Ausführen von Funktionen in heredoc-Bereichen

Zielstellung

Sie möchten umfangreiche Ausgaben mit Hilfe der heredoc-Syntax realisieren. Innerhalb des heredoc-Bereichs möchten Sie Funktionsergebnisse anzeigen oder auswerten.

Perl - Code

use strict;
use diagnostics;

sub dog { return shift, 'Terrier'; }
my $cat = 'Mimi';
my $bool;

# start heredoc
print <<"";
1: Heute ist @{[scalar localtime]}.
2: Ich habe @{[dog(2)]}.
3: Meine Katze heisst $cat.
4: Alle haben @{[$bool ? 'Hunger' : 'Durst']}.

# end heredoc

Erläuterungen

Grundvoraussetzung für das Einbinden von Funktionsergebnissen ist der Einsatz einer Funktionsreferenz, so wie es im letzten Absatz von perlref: Using References beschrieben ist. Innerhalb der eckigen Klammern wird der gewünschte Funktionsaufruf notiert, dessen Ergebnis als Referenz auf ein anonymes Array evaluiert wird. Durch das Einschließen mittels @{...} wird das Ergebnis dereferenziert und an der entsprechenden Stelle ausgegeben.

In Zeile 1 wird die perl-eigene Funktion localtime aufgerufen und ihr Ergebnis ausgegeben, Zeile 2 zeigt den Aufruf einer eigenen Subroutine mit Wertübergabe, in Zeile 3 wird einfach der Wert der Variablen $cat ausgegeben.

Zeile 4 schließlich zeigt, dass auch einfacher Perlcode verwendet werden kann, in diesem Fall ein simpler ternärer Operator.