Raku-Kurs / Fortgeschritten / Mehr über eingebaute Typen / Quoting-Konstrukte / Exercises / Ein Heredoc
Lösung: Ein Heredoc
Hier ist eine mögliche Lösung der Aufgabe.
Code
my $name = 'Anna';
my $item = 'Raku Book';
my $price = 25;
my $count = 3;
print qq:to/END/;
Dear $name,
You ordered $count copies of "$item".
That comes to {$count * $price} dollars.
Thank you!
END🦋 Du findest den Quellcode in der Datei a-heredoc.raku.
Ausgabe
Dear Anna,
You ordered 3 copies of "Raku Book".
That comes to 75 dollars.
Thank you!Kommentare
Das Heredoc beginnt mit
qq:tostattq:to, ist also interpolierend. Wie einqq-String füllt es Skalare ein —$name,$count,$item— und führt eingebetteten Code aus: Der Block{$count * $price}berechnet3 * 25, sodass die Gesamtsumme75inline erscheint.Die doppelten Anführungszeichen um
"$item"sind hier einfach wörtliche Zeichen; innerhalb eines Heredocs gibt es kein Trennzeichen zum Escapen, sodass sie wie geschrieben ausgegeben werden, während$itemtrotzdem interpoliert wird.Der Rumpf und das schließende
ENDsind um die gleichen vier Leerzeichen eingerückt. Die Einrückung des Abschlusswortes wird von jeder Zeile entfernt, sodass diese vier Leerzeichen nie im String landen — die Ausgabe beginnt am linken Rand.Das Heredoc endet bereits mit einem Zeilenumbruch, daher wird
printstattsayverwendet, um eine zusätzliche Leerzeile zu vermeiden.
Kursnavigation
← Ein Heredoc | Datum und Uhrzeit →