Ricerca…


Dumping di strutture dati

use Data::Dumper;

my $data_structure = { foo => 'bar' };
print Dumper $data_structure;

L'utilizzo di Data :: Dumper è un modo semplice per esaminare strutture dati o contenuto variabile in fase di esecuzione. Viene fornito con Perl e puoi caricarlo facilmente. La funzione Dumper restituisce la struttura dati serializzata in un modo simile al codice Perl.

$VAR1 = {
        'foo' => 'bar',
}

Ciò rende molto utile esaminare rapidamente alcuni valori nel codice. È uno degli strumenti più utili che hai nel tuo arsenale. Leggi la documentazione completa su metacpan .

Dumping con stile

A volte Data :: Dumper non è sufficiente. Hai un oggetto Moose che vuoi ispezionare? Numeri enormi della stessa struttura? Vuoi ordinare le cose? Colorato? Dati :: La stampante è tua amica.

use Data::Printer;

p $data_structure;

inserisci la descrizione dell'immagine qui

Dati :: La stampante scrive su STDERR, come warn . Ciò rende più facile trovare l'output. Per impostazione predefinita, ordina le chiavi hash e guarda gli oggetti.

use Data::Printer;
use LWP::UserAgent;

my $ua = LWP::UserAgent->new;
p $ua;

Analizzerà tutti i metodi dell'oggetto ed elencherà anche gli interni.

LWP::UserAgent  {
    Parents       LWP::MemberMixin
    public methods (45) : add_handler, agent, clone, conn_cache, cookie_jar, credentials, default_header, default_headers, delete, env_proxy, from, get, get_basic_credentials, get_my_handler, handlers, head, is_online, is_protocol_supported, local_address, max_redirect, max_size, mirror, new, no_proxy, parse_head, post, prepare_request, progress, protocols_allowed, protocols_forbidden, proxy, put, redirect_ok, remove_handler, request, requests_redirectable, run_handlers, send_request, set_my_handler, show_progress, simple_request, ssl_opts, timeout, use_alarm, use_eval
    private methods (4) : _agent, _need_proxy, _new_response, _process_colonic_headers
    internals: {
        def_headers             HTTP::Headers,
        handlers                {
            response_header   HTTP::Config
        },
        local_address           undef,
        max_redirect            7,
        max_size                undef,
        no_proxy                [],
        protocols_allowed       undef,
        protocols_forbidden     undef,
        proxy                   {},
        requests_redirectable   [
            [0] "GET",
            [1] "HEAD"
        ],
        show_progress           undef,
        ssl_opts                {
            verify_hostname   1
        },
        timeout                 180,
        use_eval                1
    }
}

È possibile configurarlo ulteriormente, in modo da serializzare determinati oggetti in un determinato modo o includere oggetti fino a una profondità arbitraria. La configurazione completa è disponibile nella documentazione .

Purtroppo Data :: Printer non viene fornito con Perl, quindi è necessario installarlo da CPAN o tramite il sistema di gestione dei pacchetti.

Dumping array list

my @data_array = (123, 456, 789, 'poi', 'uyt', "rew", "qas");
print Dumper @data_array;

Utilizzo di Data :: Dumper consente di accedere facilmente ai valori dell'elenco di recupero. Il Dumper restituisce i valori della lista serializzati in un modo simile al codice Perl.

Produzione:

$VAR1 = 123;
$VAR2 = 456;
$VAR3 = 789;
$VAR4 = 'poi';
$VAR5 = 'uyt';
$VAR6 = 'rew';
$VAR7 = 'qas';

Come suggerito dall'utente @dgw Quando si eseguono il dumping di matrici o hash, è meglio usare un riferimento di matrice o un riferimento di hash, quelli saranno mostrati meglio adattati all'input.

$ref_data = [23,45,67,'mnb','vcx'];
print Dumper $ref_data;

Produzione:

$VAR1 = [
          23,
          45,
          67,
          'mnb',
          'vcx'
        ];

È anche possibile fare riferimento alla matrice durante la stampa.

my @data_array = (23,45,67,'mnb','vcx');
print Dumper \@data_array;

Produzione:

$VAR1 = [
          23,
          45,
          67,
          'mnb',
          'vcx'
        ];

Data :: Visualizza

La funzione show viene automaticamente esportata quando si use Data::Show; viene eseguito. Questa funzione accetta una variabile come argomento esclusivo e restituisce:

  1. il nome della variabile
  2. il contenuto di quella variabile (in un formato leggibile)
  3. la riga del file che show viene eseguita da
  4. il file show viene eseguito da

Supponendo che quanto segue è il codice dal file example.pl :

use strict;
use warnings;
use Data::Show;

my @array = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

my %hash  = ( foo => 1, bar => { baz => 10, qux => 20 } );

my $href = \%hash;

show @array;
show %hash;
show $href;

perl example.pl fornisce il seguente risultato:

======(  @array  )=======================[ 'example.pl', line 11 ]======

    [1 .. 10]


======(  %hash  )========================[ 'example.pl', line 12 ]======

    { bar => { baz => 10, qux => 20 }, foo => 1 }


======(  $href  )========================[ 'example.pl', line 13 ]======

    { bar => { baz => 10, qux => 20 }, foo => 1 }

Vedere la documentazione per Data::Show .



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow