Perl Language
Déboguer la sortie
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;
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:
- Le nom de la variable
- le contenu de cette variable (dans un format lisible)
- la ligne du fichier qui
show
est exécutée à partir de - 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
.