Newsgroup: it.comp.lang.perl
Titolo: Perl e Git

Ciao *,
sto scrivendo un script in perl per interagire direttamente con
github.com
 utilizzando le api messe a disposizione che trovate qui,
http://search.cpan.org/~fayland/Net-GitHub-0.18/
.
L'unica cosa che non capisco è come stampare i risultati delle
richieste.
Ho fatto un piccolo passo avanti utilizzando json, e precisamente il
metodo objToJson passandoli come parametro la funzione.
Però tramite json l'output che ottengo è questo:
{"owner":"peppux","private":false,"name":"test","description":"test
decs"}
E come vedete è molto sgradevole...
Attendo vostre risposte, vi ringrazio in anticipo.
peppux.

 
Non si capisce quello che stai cercando di ottenere. N� che c'entri JSON. N�
che ci sia di "sgradevole" (o di "gradevole", se � per quello).
Vuoi stampare quelle informazioni in una forma leggibile? Dov'� il problema?
Avrai una struttura dati, no? Prendi quello che ti interessa e lo "stampi"
usando la tecnologia appropriata per il tipo di output desiderato (console,
pagina HTML, segnali morse, striscione pubblicitario, SMS, etc). Non si
capisce che difficolt� stai incontrando.
Max

 Max
E' vero non sono stato molto chiaro, sto incontrando difficoltà nello
stampare l'output ottenuto.
L'ouput devo stamparlo nel terminale e vorrei fosse stampato nel
seguente modo:
owner : peppux
name : value
etc : etc
Spero di essere stato più chiaro questa volta.

 Spero di essere stato pi� chiaro questa volta.
Ora � chiaro. Ma continuo a non capire dove sia il problema. Se hai una
struttura dati che produce quel output JSON, allora hai un semplice hash.
Se hai problemi a estrarre le chiavi e i valori di un hash, allora la
questione riguarda il Perl, non Git, n� quel particolare modulo.
Se $result � l'hash-ref restituito dalla funzione:
 while( my ( $k, $v ) = each(%$result) )  {     
     print "$k : $v\n";
 }
 
Max

 Max
Ma la funzione non restituisce con hash-ref, ma restituisce questo:
return $self->get_json_to_obj( "user/show/$owner", 'user' );

 return $self->get_json_to_obj( "user/show/$owner", 'user' );
Restituisce un hash-ref. Fidati.
Max


Ho provato come hai detto tu, però mi restituisce questo errore:
Pseudo-hashes are deprecated at 
script.pl
 line 34.
Pseudo-hashes are deprecated at 
script.pl
 line 34.
Argument "peppux" isn't numeric in each at 
script.pl
 line 34.
Bad index while coercing array into hash at 
script.pl
 line 34.

 Bad index while coercing array into hash at 
script.pl
 line 34.
puoi mostrare un brano di codice che contenga questa
linea 34 ? 
s.
-- 
Stefano Rodighiero      |  
http://www.stefanorodighiero.net
mailto:
lar...@perl.it
   |  Italian Perl Mongers: 
http://www.perl.it

 mailto:
lar...@perl.it
   |  Italian Perl Mongers:
http://www.perl.it
certo, eccolo:
31     my $repositories = $repos->list();
32
33
34     while( my ( $k, $v ) = each(%$repositories) )  {
35      print "$k{'k'} : $v\n";
36    }
come potete vedere la riga 34 corrisponde al ciclo

 31 � � my $repositories = $repos->list();
Ah, ma 'list' non � la funzione di cui parlavi quando dicevi che restituiva 
  $self->get_json_to_obj( "user/show/$owner", 'user' );
Quella era "show". 'list' restituisce presumibilmente un array-ref, mentre
l'output JSON nel tuo primo messaggio non era un array.
Prova questo:
  foreach my $repo (@$repositories) {
 � � while( my ( $k, $v ) = each(%$repo) ) �{
        print "$k{'k'} : $v\n";
�  }
 
Se non funzione, guarda come � fatta realmente la struttura restituita
da 'list' usando Data::Dumper:
  use Data::Dumper;
  print Dumper($repositories);
Max

 Max
Ecco il risultato:
$VAR1 = [
          {
            'owner' => 'peppux',
            'private' => bless( do{\(my $o = 0)},
'JSON::XS::Boolean' ),
            'name' => 'test',
            'description' => 'desc',
            'homepage' => '',
            'forks' => 0,
            'watchers' => 1,
            'fork' => $VAR1->[0]{'private'},
            'url' => '
http://github.com/peppux/test
',
            'open_issues' => 0
          }
        ];
scusate se ho risposto in ritardo.