PDA

Visualizza la versione completa : Mechanize e hash


iox84
14-02-2007, 12:55
Salve a tutti, sono nuovo del perl e mi trovo un pò in difficoltà.
Ho il seguente codice


#!/usr/bin/perl

use WWW::Mechanize;

$url = "file:///home/armando/Desktop/temporaneo.htm";
#$SLEEP = 2;
my $mech = WWW::Mechanize->new();
$SLEEP = 2;

$mech->get($url);

for(reverse $mech->find_all_links()){
sleep $SLEEP;
my %hash = $_->attrs;
while ( ($key, $value) = each %hash) {
print "$key = $value\n";
}
}


Che è stato composto da spezzoni di codice presi quà e la.
Nel ciclo while, ho un problema, infatti il metodo $_->attrs() dovrebbe restituirmi un HASH, che vado a fetchare nel while, solo che succede una cosa strana, ecco il risultato:


HASH(0x82ee5c0) =
HASH(0x82ec9e8) =
HASH(0x82eda20) =


Presumo che mi restituisca un Hash nella variabile $key. Non riesco a capire la struttura di questo hash, qualcuno mi può spiegare? Inoltre, è possibile stampare a video la struttura di un hash con un comando simile al comando



print_r($array);

di php?
Grazie a tutti.
Saluti.

shishii
14-02-2007, 16:37
L'errore è qui:

my %hash = $_->attrs;

è corretto:

my %hash = %{$_->attrs};

Infatti nel primo modo assegni alla key del primo elemento il puntatore all'hash anonimo $_->attrs.

Nel secondo assegni il contenuto.

iox84
14-02-2007, 16:41
Grazie mille, era proprio quello.
Non conosco le basi del perl (e si vede) purtroppo sono un programmatore "comodo"...

Mi risentirete ancora di sicuro.
Grazie ancora e ciao.

Loading