Curso de Raku / Avanzado / Más sobre los tipos integrados / Construcciones de entrecomillado / Exercises / Un heredoc
Solución: Un heredoc
Aquí tienes una de las posibles soluciones:
Código
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🦋 Encuentra el programa en el archivo a-heredoc.raku.
Salida
Dear Anna,
You ordered 3 copies of "Raku Book".
That comes to 75 dollars.
Thank you!Comentarios
El heredoc comienza con
qq:toen lugar deq:to, por lo que interpola. Al igual que una cadenaqq, rellena los escalares —$name,$count,$item— y ejecuta código incrustado: el bloque{$count * $price}calcula3 * 25, de modo que el total75aparece en línea.Las comillas dobles alrededor de
"$item"son simplemente caracteres literales aquí; dentro de un heredoc no hay delimitador que escapar, por lo que se imprimen tal cual mientras$itemsigue interpolándose.El cuerpo y el
ENDde cierre están indentados con los mismos cuatro espacios. La indentación del terminador se elimina de cada línea, así que esos cuatro espacios nunca llegan a la cadena — la salida comienza en el margen izquierdo.El heredoc ya termina con un salto de línea, por lo que se usa
printen lugar desaypara evitar añadir una segunda línea en blanco.
Navegación del curso
← Un heredoc | Fecha y hora →