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;

Geben Sie hier die Bildbeschreibung ein

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:

  1. der Name der Variablen
  2. den Inhalt dieser Variablen (in einem lesbaren Format)
  3. Die Zeile der Datei, von der die show wird
  4. 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 .



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow