2012-01-04 20 views
5

Para el siguiente fragmento de código, ¿entiendo mi comprensión de $label = $classifier->{result}->{forcast}->[$i]->{label};?¿Cómo analizar este ejemplo hash de hash?

1) el resultado se usa como la clave para el hash ref del clasificador;

2) forcast se utiliza como clave para el hash de referencia de $ clasificador -> {resultado}

3) $ clasificador -> {resultado} -> {forcast} es una referencia a un array, y yo -thvalor de esta matriz también es una referencia hash

4) La etiqueta es la clave de la referencia de hash $ clasificador -> {resultado} -> {forcast} -> [$ i]. El valor correspondiente se asigna al lado izquierdo de $ label.

my $i=0; 
while (<classifierinput>) 
{ 
    $label = $classifier->{result}->{forcast}->[$i]->{label}; 
    $i++; 
} 
+0

¿Cómo se define la entrada de clasificador? ¿Qué se supone que debe lograr este código? – Dave

+0

Su comprensión es correcta. Solo agregaré que entre dos conjuntos consecutivos de paréntesis de indexación (matriz o hash), la flecha de eliminación de referencias es opcional. Por lo tanto, su ejemplo se puede escribir '$ clasificador -> {resultado} {forcast} [$ i] {etiqueta}' (la primera flecha de desreferenciación no es opcional ya que no está entre dos conjuntos de corchetes). –

Respuesta

2

Sí, su entendimiento es correcto.