web-dev-qa-db-fra.com

Données de hachage Perl :: Dumper

En Perl, j'ai besoin d'analyser un hachage énorme, je l'imprime donc dans un fichier avec Data::Dumper module. Parce que c'est un fichier énorme, il est très difficile à lire. Est-il possible en quelque sorte d’imprimer joliment la sortie Dumper, de sorte que lorsque je trouverai une chaîne que je cherche, je pourrai voir immédiatement la structure de clé où la chaîne que je cherche est stockée?

Actuellement, je n'utilise qu'un simple code:

            use Data::Dumper;
            ...
            print Dumper $var;

Quelle est la meilleure syntaxe ou alternative pour obtenir une sortie Nice?

11
Ωmega

J'ai presque toujours mis

$Data::Dumper::Indent = 1;
$Data::Dumper::Sortkeys = 1;

avec Data::Dumper. La première instruction rend la sortie plus compacte et beaucoup plus lisible lorsque la structure de vos données a plusieurs niveaux de profondeur. La deuxième instruction facilite l'analyse de la sortie et la recherche rapide des clés qui vous intéressent le plus.

Si la structure de données contient des données binaires ou des onglets/nouvelles lignes incorporés, tenez également compte des éléments suivants:

$Data::Dumper::Useqq = 1;

qui produira une représentation lisible appropriée pour ces données.

Beaucoup plus dans le perldoc .

20
mob

Une solution possible consiste à utiliser Data :: Dumper :: Perltidy qui exécute la sortie de Data :: Dump via Perltidy.

#!/usr/bin/Perl -w

use strict;
use Data::Dumper::Perltidy;

my $data = [{ title => 'This is a test header' },{ data_range =>
           [ 0, 0, 3, 9] },{ format     => 'bold' }];

print Dumper $data;

__END__

Impressions:

$VAR1 = [
    { 'title'      => 'This is a test header' },
    { 'data_range' => [ 0, 0, 3, 9 ] },
    { 'format'     => 'bold' }
];

Une autre méthode consiste à utiliser Data :: Dump .

9
jmcnamara
$Data::Dumper::Sortkeys = 1;

Si vous voulez obtenir un résultat plus fiable, vous devez suivre le dumper suivant. Mettez dans le mot approprié pour utiliser cette fonction.

0
user2524042