2010-05-12 12 views
13

¿Cómo puedo hacer un comentario de una parte de una sola línea en Perl, al igual que la siguiente línea:¿Cómo puedo comentar solo parte de una línea en Perl?

if($clevel==0){#never happends} 

Me gustaría ser capaz de comentar que la última llave de cierre, sin tener que ir a una nueva línea.

+0

Sea específico: copie y pegue en su pregunta la línea de código con la que está trabajando y dígale qué parte le gustaría comentar selectivamente. –

+0

¿Qué pasa con lo que tienes? ¿Estás cerrando el bloque con otro código? Si no vas a ejecutar el bloque, ¿por qué no comentas el si también? –

+0

Por supuesto que estoy pidiendo esto principalmente para saber cómo hacer esto en general. Esta única instancia en sí misma no es una cosa importante. Pero la razón es una mayor legibilidad. Si comento la línea, cambia de color y también se desalinea con las otras líneas if ($ clevel == x). –

Respuesta

11

El signo # inicia un comentario que finaliza con el final de la línea.

+0

sí, lo sé, pero quiero finalizar el comentario antes de que termine la línea. –

+3

@Herrmann Ingjaldsson: no hay ninguna disposición para eso ... pero mira aquí las ideas de Perl6: http://dev.perl.org/perl6/rfc/102.html – lexu

+0

oh bien, la pregunta fue respondida. –

5

A # y luego un salto de línea. Puede tratarlos como un paréntesis de clases, ya que poco en Perl pierde su significado de estar en líneas diferentes.

my $ans = 2 + rand(5) + $pixels/FUDGE_FACTOR; 

Para

my $ans = # 2 + 
    rand(5) + $pixels #/FUDGE_FACTOR 
    ; 

O a partir de:

if (dont_know_how_this_breaks() && defined $attribute) { 
    #... 
} 

Para:

if (# dont_know_how_this_breaks() && 
    defined $attribute) { 
    #... 
} 
+0

Sí, eso es cierto, pero intento escribir algo, luego comentar y luego escribir de nuevo. Todo dentro de la misma línea. –

+0

@Hermann ¿Por qué no dividir la línea de código como en esta respuesta hace lo que quiere? –

+0

porque me obliga a dividir la línea. quiero que la oración continúe justo después del comentario. una pequeña explicación para una sola palabra en una oración no debería requerir romper la línea. el código que escribo es el siguiente: if ($ clevel == 0) {#never happends} aquí sería bueno si pudiera terminar ese corchete de cierre sin pasar a la siguiente línea. es como no tener que hacer una nueva línea cada vez que uno pone un [] en una cita. requiriendo que el operador de nueva línea pueda disminuir la legibilidad y la compacidad. Y, por último, ¿cómo forzar una nueva línea en un comentario aquí? –

7

Si es realmente tan importante, filtrado de fuente de uso.

# C_Style_Comments.pm 
package C_Style_Comments; 
use Filter::Simple; 
FILTER { s{/\* .* \*/}{}gmx }; 
1; 

$ perl -MC_Style_Comments -e 'print /* 5, No wait, I mean */ 3' 
3 
+0

+1 para filtros de fuente. Tal como lo tienes, parece que incluso podrías comentar partes de un comentario o una cadena. Cool – Axeman

+10

Los filtros de origen son malvados. De repente, no puedes confiar en el código frente a tus ojos, porque alguna magia invisible en otro lugar del programa podría estar alterándolo. Puede ser útil en el desarrollo, pero mantenerse lejos de él en el código de producción. EN MI HUMILDE OPINIÓN. – Ether

+1

Al igual que muchas cosas malvadas, hay un tiempo y un lugar para los filtros fuente (esta pregunta no es necesariamente una de esas veces). Siempre use sus gafas de seguridad. – mob

6

algún motivo no se puede escribir:

if($clevel==0){#never happends} 

como:

if($clevel==0){} #never happens 

Hay algunos trucos que puede hacer para ocultar mensajes, tales como :

0 and 'some comment' 

Pero lo va a hacer más confuso si otra persona tiene que mantener su código en el futuro.

Trabajar dentro de las limitaciones de un idioma, en lugar de tratar de forzarlo a actuar como un idioma con el que está más familiarizado, a menudo lo lleva a aprender cosas nuevas. Personalmente, odio trabajar en IDL, pero algunos de los trucos para lidiar con el bajo rendimiento del bucle me llevaron a optimizar el código que he escrito desde entonces en otros idiomas.

+1

Para mantener el código completo, no solo debe comentar sobre una "condición imposible", debe advertir o morir o imprimir algún mensaje entretenido (porque eso se soluciona) para que * sepa * cuando el código ha tocado uno de esas líneas "imposibles". – Axeman

+0

@Axeman: Prefiero evitar 'morir' después de depurar algún código en el que alguien no considera cómo podrían cambiar las cosas en el futuro, y así atacar a una de esas secciones 'esto nunca debería suceder'. Pero tienes razón, "advierte que esto nunca debería suceder" lograría el caso específico que se le preguntó. – Joe

+0

Ah, esto es algo que uno de mis profesores una vez recomendó como una forma de "comentar" secciones de código cuando no tienen un mecanismo de comentario de líneas múltiples – Abdul

0

Parte de la línea o multiplicar línea de comentario en Perl:

=comment 
... 
... 
... 

=cut 
+0

He visto esta sintaxis para comentarios de varias líneas, pero no para comentarios de línea parcial. No estoy 100% seguro, pero creo que está equivocado en su afirmación de que esta sintaxis puede usarse para un comentario de línea parcial. – oyvey

1

utilizar una cadena como un comentario en línea:

perl -lne '$a++; q#some explanation#;print;' 

Inline comentar es necesario para comentar código Perl incrustado en Makefile (y Bash script y Vim Scripts) como en este vimscript call perl .. VIM thesaurus file

Cuestiones relacionadas