Zoeken…


Gegevensstructuren dumpen

use Data::Dumper;

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

Data gebruiken :: Dumper is een eenvoudige manier om tijdens runtime naar datastructuren of variabele inhoud te kijken. Het wordt geleverd met Perl en u kunt het gemakkelijk laden. De functie Dumper retourneert de datastructuur geserialiseerd op een manier die lijkt op Perl-code.

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

Dat maakt het erg handig om snel naar enkele waarden in uw code te kijken. Het is een van de handigste tools die je in je arsenaal hebt. Lees de volledige documentatie op metacpan .

Stijlvol dumpen

Soms is Data :: Dumper niet genoeg. Heb je een Moose-object dat je wilt inspecteren? Enorme aantallen van dezelfde structuur? Wil je dingen gesorteerd? Gekleurde? Gegevens :: Printer is je vriend.

use Data::Printer;

p $data_structure;

voer hier de afbeeldingsbeschrijving in

Gegevens :: Printer schrijft naar STDERR, zoals warn . Dat maakt het gemakkelijker om de output te vinden. Standaard sorteert het hash-toetsen en kijkt naar objecten.

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

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

Het zal alle methoden van het object bekijken en ook de internals vermelden.

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

U kunt het verder configureren, zodat het bepaalde objecten op een bepaalde manier serialiseert, of om objecten tot een willekeurige diepte op te nemen. De volledige configuratie is beschikbaar in de documentatie .

Helaas gegevens :: Printer wordt niet geleverd met Perl, dus u moet deze installeren vanaf CPAN of via uw pakketbeheersysteem.

Dumping array-lijst

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

Data gebruiken :: Dumper geeft een gemakkelijke toegang tot het ophalen van lijstwaarden. De Dumper retourneert de lijstwaarden geserialiseerd op een manier die lijkt op Perl-code.

Output:

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

Zoals gesuggereerd door gebruiker @dgw Bij het dumpen van arrays of hashes is het beter om een arrayreferentie of een hashreferentie te gebruiken, deze zullen beter passen bij de invoer.

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

Output:

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

U kunt ook naar de array verwijzen tijdens het afdrukken.

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

Output:

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

Data :: Show

De functie show wordt automatisch uitgevoerd wanneer use Data::Show; is geëxecuteerd. Deze functie neemt een variabele als het enige argument en voert het volgende uit:

  1. de naam van de variabele
  2. de inhoud van die variabele (in een leesbaar formaat)
  3. de regel van het bestand waarvan wordt show wordt uitgevoerd
  4. het bestand show wordt uitgevoerd vanaf

Ervan uitgaande dat het volgende code is uit het bestand 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 geeft de volgende uitvoer:

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

Raadpleeg de documentatie voor Data::Show .



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow