Sök…


Dumpning av datastrukturer

use Data::Dumper;

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

Att använda Data :: Dumper är ett enkelt sätt att titta på datastrukturer eller variabelt innehåll vid körning. Det levereras med Perl och du kan ladda det enkelt. Dumper funktionen returnerar datastrukturen seriellt på ett sätt som ser ut som Perl-koden.

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

Det gör det mycket användbart att snabbt titta på vissa värden i din kod. Det är ett av de mest praktiska verktygen du har i ditt arsenal. Läs hela dokumentationen på metacpan .

Dumpa med stil

Ibland räcker det inte med Data :: Dumper . Har du ett älgobjekt du vill inspektera? Stort antal med samma struktur? Vill du ha saker sorterade? Färgad? Data :: Skrivare är din vän.

use Data::Printer;

p $data_structure;

ange bildbeskrivning här

Data :: Skrivare skriver till STDERR, som warn . Det gör det lättare att hitta utdata. Som standard sorterar det hashnycklar och tittar på objekt.

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

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

Den kommer att titta på alla objektets metoder och även lista över internerna.

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
    }
}

Du kan konfigurera det ytterligare, så att det serielliserar vissa objekt på ett visst sätt eller inkluderar objekt upp till ett godtyckligt djup. Den fullständiga konfigurationen finns tillgänglig i dokumentationen .

Tyvärr levereras Data :: Printer inte med Perl, så du måste installera dem från CPAN eller via ditt pakethanteringssystem.

Dumpning array lista

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

Att använda Data :: Dumper ger en enkel åtkomst till hämtningslistvärden. Dumper returnerar listvärdena på ett sätt som ser ut som Perl-koden.

Produktion:

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

Som föreslagits av user @dgw När du dumpar matriser eller hash är det bättre att använda en matrisreferens eller en hashreferens, de kommer att visas bättre anpassade till ingången.

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

Produktion:

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

Du kan också referera till matrisen när du skriver ut.

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

Produktion:

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

Visning av data

Funktionen show automatiskt exporteras när use Data::Show; avrättas. Denna funktion tar en variabel som enda argument och matar ut:

  1. namnet på variabeln
  2. innehållet i den variabeln (i ett läsbart format)
  3. raden för filen som show körs från
  4. filen show körs från

Förutsatt att följande är kod från filen 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 ger följande utgång:

======(  @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 }

Se dokumentationen för Data::Show .



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow