2011-12-23 13 views
18

Hoy he encontrado un problema que me exige determinar el índice máximo de una matriz en Perl. Solía ​​hacerlo de esta manera:¿Cómo funcionan el dólar y el signo de número juntos en perl?

my @array = (1, 2, 3); 
print $array[@array - 1]; 

Pero hoy me he topado con este código:

my @array = (1, 2, 3); 
print $array[$#array]; 

no pude encontrar nada en el caso de los documentos. ¿Qué es exactamente esa construcción $#? ¿Es eso un operador? ¿Y cómo funciona, es más rápido que la primera pieza de código? ¿Siempre devuelve el índice de matriz máximo? ¿Está desaprobado o no?

Sé que hay muchas preguntas, pero todas se pueden resumir en una, y eso es lo que realmente quiero saber: ¿Cómo funciona?

+0

Es como csh – sidyll

+4

'$ # array' le dirá el número del último índice, pero si solo desea obtener el último elemento (y no le importa su índice real) es mucho más fácil de usar '$ array [-1]' – friedo

+1

Pregunta relacionada: http://stackoverflow.com/questions/2997042/where-is-the-documentation-for – Zaid

Respuesta

22

Esto está documentado en perldoc perldata, section "Scalar Values". En resumen, $#array es el último índice de @array. En cuanto a cómo funciona, es una especie de operador, pero solo operan tanto como $ y @. Piénselo como una sintaxis especial. El último índice de una matriz simplemente pasa a "tener un nombre". Es una variable que puedes leer y asignar.

6

El uso se menciona en el primer ejemplo en perldata. Denota el índice del último elemento en la matriz.

Por cierto, también se puede utilizar

$array[-1] 

para conseguir último elemento.

Cuestiones relacionadas