Cursus Raku / Geavanceerd / Meer over ingebouwde types / Aanhalingsconstructies / Exercises / Een heredoc
Oplossing: Een heredoc
Hier is een mogelijke oplossing voor de opgave.
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🦋 Je kunt de broncode vinden in het bestand a-heredoc.raku.
Uitvoer
Dear Anna,
You ordered 3 copies of "Raku Book".
That comes to 75 dollars.
Thank you!Opmerkingen
De heredoc begint met
qq:toin plaats vanq:to, dus hij interpoleert. Net als eenqq-string vult hij scalars in —$name,$count,$item— en voert hij ingebedde code uit: het blok{$count * $price}berekent3 * 25, dus het totaal75verschijnt inline.De dubbele aanhalingstekens rond
"$item"zijn hier gewoon letterlijke tekens; binnen een heredoc is er geen scheidingsteken om te escapen, dus ze worden afgedrukt zoals ze zijn terwijl$itemtoch wordt geinterpoleerd.De inhoud en het afsluitende
ENDzijn met dezelfde vier spaties ingesprongen. De inspringging van het afsluitwoord wordt van elke regel verwijderd, dus die vier spaties bereiken de string nooit — de uitvoer begint aan de linkerkantlijn.De heredoc eindigt al met een nieuwe regel, dus
printwordt gebruikt in plaats vansayom te voorkomen dat er een tweede lege regel wordt toegevoegd.
Cursusnavigatie
← Een heredoc | Datum en tijd →