Perl Language
Debug Output
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;
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:
- namnet på variabeln
- innehållet i den variabeln (i ett läsbart format)
- raden för filen som
show
körs från - 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
.