Perl Language
Debug-Ausgabe
Suche…
Dumping von Datenstrukturen
use Data::Dumper;
my $data_structure = { foo => 'bar' };
print Dumper $data_structure;
Die Verwendung von Data :: Dumper bietet eine einfache Möglichkeit, Datenstrukturen oder variablen Inhalt zur Laufzeit anzuzeigen. Es wird mit Perl geliefert und Sie können es problemlos laden. Die Dumper
Funktion gibt die serialisierte Datenstruktur in einer Weise zurück, die wie Perl-Code aussieht.
$VAR1 = {
'foo' => 'bar',
}
Daher ist es sehr nützlich, einige Werte in Ihrem Code schnell zu überprüfen. Es ist eines der nützlichsten Werkzeuge, die Sie in Ihrem Arsenal haben. Lesen Sie die vollständige Dokumentation zu metacpan .
Dumping mit Stil
Manchmal reicht Data :: Dumper nicht aus. Haben Sie ein Elchobjekt, das Sie untersuchen möchten? Riesige Zahlen der gleichen Struktur? Willst du Sachen sortiert? Farbig? Data :: Printer ist dein Freund.
use Data::Printer;
p $data_structure;
Data :: Printer schreibt in STDERR, wie warn
. Dies erleichtert das Auffinden der Ausgabe. Standardmäßig werden Hash-Schlüssel sortiert und Objekte betrachtet.
use Data::Printer;
use LWP::UserAgent;
my $ua = LWP::UserAgent->new;
p $ua;
Es werden alle Methoden des Objekts betrachtet und die Interna aufgelistet.
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
}
}
Sie können es weiter konfigurieren, um bestimmte Objekte auf bestimmte Weise zu serialisieren oder Objekte bis zu einer beliebigen Tiefe aufzunehmen. Die vollständige Konfiguration finden Sie in der Dokumentation .
Leider wird Data :: Printer nicht mit Perl ausgeliefert. Sie müssen es also über CPAN oder Ihr Paketverwaltungssystem installieren.
Dumping-Array-Liste
my @data_array = (123, 456, 789, 'poi', 'uyt', "rew", "qas");
print Dumper @data_array;
Die Verwendung von Data :: Dumper ermöglicht einen einfachen Zugriff auf die Abruflistenwerte. Der Dumper
gibt die serialisierten Dumper
in einer Weise zurück, die wie Perl-Code aussieht.
Ausgabe:
$VAR1 = 123;
$VAR2 = 456;
$VAR3 = 789;
$VAR4 = 'poi';
$VAR5 = 'uyt';
$VAR6 = 'rew';
$VAR7 = 'qas';
Wie von Benutzer @dgw vorgeschlagen. Wenn Sie Arrays oder Hashes sichern, ist es besser, eine Arrayreferenz oder eine Hashreferenz zu verwenden, da diese besser zu der Eingabe passen.
$ref_data = [23,45,67,'mnb','vcx'];
print Dumper $ref_data;
Ausgabe:
$VAR1 = [
23,
45,
67,
'mnb',
'vcx'
];
Sie können das Array auch beim Drucken referenzieren.
my @data_array = (23,45,67,'mnb','vcx');
print Dumper \@data_array;
Ausgabe:
$VAR1 = [
23,
45,
67,
'mnb',
'vcx'
];
Data :: Show
Die Funktion show
wird bei use Data::Show;
automatisch exportiert use Data::Show;
ausgeführt wird. Diese Funktion verwendet eine Variable als einziges Argument und gibt Folgendes aus:
- der Name der Variablen
- den Inhalt dieser Variablen (in einem lesbaren Format)
- Die Zeile der Datei, von der die
show
wird - die Datei
show
ausgeführt von
Angenommen, der folgende Code besteht aus der Datei 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
liefert die folgende Ausgabe:
======( @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 }
Siehe die Dokumentation für Data::Show
.