Esta sintaxis secreta se conoce como la ornamentada espada de doble filo , y normalmente se denota como:
<<m=~m>>
Comments here
m
;
Es un truco para comentarios de varias líneas, haciendo uso de la sintaxis heredoc y el operador de coincidencia ( =~
) con >
como delimitador.
Tenga en cuenta que, dado que las barras inclinadas, /
no se utilizan como delimitador para la coincidencia, el operador 'm' es obligatorio. Por ejemplo, $my_var =~ /test/
es equivalente a $my_var =~ m>test>
, mientras $my_var =~ >test>
que sería inválido.
Prestar atención al hecho de que el primer m
carácter en el fragmento está encerrado por comillas simples, es decir, el $a
y $b
no va a ser interpolado variables. Si se hubieran omitido estas comillas (según mi ejemplo de código proporcionado), perl agregaría automáticamente comillas dobles al marcador final y se interpolaría cualquier variable posterior. Esto causaría problemas si $a
y $b
ya no están definidos y estás usando use warnings;
.
Para hacer que el ejemplo de la doble hoja adornado de arriba sea más fácil de entender (pero aún no recomendado), podríamos escribir:
<<"END" =~ //
Comments here
END
;
Tenga en cuenta que =~ //
es redundante, por lo que equivale a:
<<"END";
Comments here
END
Que es solo la sintaxis estándar de heredoc en contexto vacío.
No recomendaría usar esto en el código de producción, ya que tener una cadena en un contexto vacío puede causar problemas. Además, este código es un raspador de cabezas incluso para los programadores de perl más experimentados y es inútilmente difícil de leer y mantener. Si desea crear comentarios de varias líneas adecuados, le sugiero que se ciña al pod como se explica aquí. ¿Cómo ingreso un comentario de varias líneas en Perl?
Espero que esto lo aclare.