Perl Language
Foutopsporingsoutput
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;
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:
- de naam van de variabele
- de inhoud van die variabele (in een leesbaar formaat)
- de regel van het bestand waarvan wordt
show
wordt uitgevoerd - 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
.