Recherche…


Dumping data-structures

use Data::Dumper;

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

L'utilisation de Data :: Dumper est un moyen simple d'examiner les structures de données ou le contenu variable au moment de l'exécution. Il est livré avec Perl et vous pouvez le charger facilement. La fonction Dumper renvoie la structure de données sérialisée d'une manière qui ressemble à du code Perl.

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

Cela rend très utile d'examiner rapidement certaines valeurs de votre code. C'est l'un des outils les plus pratiques de votre arsenal. Lisez la documentation complète sur metacpan .

Dumping avec style

Parfois, Data :: Dumper ne suffit pas. Vous avez un objet orignal que vous voulez inspecter? Des nombres énormes de la même structure? Vous voulez des choses triées? Coloré? Data :: Printer est votre ami.

use Data::Printer;

p $data_structure;

entrer la description de l'image ici

Data :: Printer écrit sur STDERR, comme warn . Cela facilite la recherche de la sortie. Par défaut, il trie les clés de hachage et examine les objets.

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

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

Il examinera toutes les méthodes de l'objet et listera également les composants internes.

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

Vous pouvez le configurer davantage, de sorte qu'il sérialise certains objets d'une certaine manière, ou d'inclure des objets jusqu'à une profondeur arbitraire. La configuration complète est disponible dans la documentation .

Malheureusement, Data :: Printer n'est pas livré avec Perl, vous devez donc l'installer à partir de CPAN ou via votre système de gestion de paquets.

Liste de tableaux de dumping

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

Utiliser Data :: Dumper permet d'accéder facilement aux valeurs de liste. Le Dumper renvoie les valeurs de liste sérialisées de manière à ressembler à du code Perl.

Sortie:

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

Comme suggéré par l'utilisateur @dgw Lors du vidage de tableaux ou de hachages, il est préférable d'utiliser une référence de tableau ou une référence de hachage, celles-ci seront mieux adaptées à l'entrée.

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

Sortie:

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

Vous pouvez également référencer le tableau lors de l'impression.

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

Sortie:

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

Exposition des données

La fonction show est automatiquement exportée lorsque vous use Data::Show; est exécuté. Cette fonction prend une variable comme seul argument et génère:

  1. Le nom de la variable
  2. le contenu de cette variable (dans un format lisible)
  3. la ligne du fichier qui show est exécutée à partir de
  4. le fichier show est exécuté à partir de

En supposant que le code suivant provient du fichier 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 donne la sortie suivante:

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

Voir la documentation de Data::Show .



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow