2008-09-19 15 views
5

Estoy tratando de entender el código Perl de otra persona sin saber demasiado sobre Perl. Apreciaría tu ayuda.¿Qué es un guion bajo doble en Perl?

que he encontrado una función Perl lo largo de estas líneas:

MyFunction($arg1,$arg2__size,$arg3) 

¿Hay un sentido a la sintaxis de doble subrayado en $arg2, o es sólo una parte del nombre del segundo argumento?

Respuesta

11

No hay un significado específico para el uso de un __ dentro de un nombre de variable Perl. Es probable que el programador prefiera, especialmente en el caso que ha citado en su pregunta. Puede ver más información sobre la nomenclatura de variables perl here.

1

Estoy bastante seguro de que arg2__size es solo el nombre de una variable.

11

Como en la mayoría de los idiomas, el subrayado es solo parte de un identificador; sin significado especial

¿Pero seguro que es Perl? No hay ningún sigilo en las variables. ¿Puedes publicar más contexto?

+0

Por Dios, dejan que alguien aquí;) – Ovid

+0

Sí - lo que es el sitio llegando a . Seriamente. –

+0

Reparé los sigilos, por lo que ahora tu respuesta no tiene sentido.:) –

2

En lo que respecta al intérprete, un guión bajo es simplemente otro carácter permitido en los identificadores. Se puede usar como una alternativa a la concatenación o al camello para formar identificadores de varias palabras.

Un guion bajo a menudo se usa para indicar que un identificador es solo para uso local, p. para partes no exportadas de un módulo. Es simplemente una convención; al intérprete no le importa

2

En el contexto de su pregunta, el guión bajo doble no tiene ningún significado programático. El doble guion bajo significa algo especial para un número limitado de valores en Perl, más notablemente __FILE__ & __LINE__. Estos son literales especiales que no están prefijados con un sigil ($, % o @) y solo se interpolan fuera de las comillas. Contienen la ruta completa & nombre del archivo que se está ejecutando actualmente y la línea que se está ejecutando. Consulte la sección sobre "Literales especiales" en perldata o this post on Perl Monks

1

La respuesta de Mark es, por supuesto, correcta, no tiene un significado especial.

Pero quiero señalar que su ejemplo no se parece en nada a Perl. Las variables de Perl no son palabras sencillas. Tienen los sigilos, como verán en los enlaces de arriba. Y Perl no tiene "funciones", tiene subrutinas.

Por lo tanto, puede haber cierta confusión sobre el idioma del que estamos hablando.

+0

Edité la pregunta para agregar sigils, por lo que ahora esta respuesta está un poco desactualizada. Sin embargo, tenga en cuenta que esas palabras no identificadas podrían haber sido nombres de subrutinas. Y, Perl tiene funciones. Están listados en perlfunc. :) –

-1

Deberá decirle al intérprete que "$ arg2" es el nombre de una variable. y no "$ arg2__size". Para esto, necesitarás usar el paréntesis. (Este uso es similar al visto en shell).

Esto debería funcionar MyFunction ($ arg1, arg2 $ {} __ tamaño, $ arg3)

--Binu

Cuestiones relacionadas