Perlのデバッグを効率化するためのData::Dumper活用法
作成日:2025.01.29
Perlのデバッグに便利なData::Dumperの使い方を解説します。変数や配列の出力方法、ネスト構造の扱い、出力フォーマットのカスタマイズなど、効率的なデバッグ手法について具体例を交えながら紹介します。
Perlのデバックに便利な Data::Dumperの使い方メモ。
変数・配列・連想配列を出力
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
my $scholar = 'scholar';
my @array = ('array1','array2','array3');
my %hash = (
'hash1' => 1,
'hash2' => 2,
'hash3' => 3
);
print Dumper $scholar;
print Dumper @array;
print Dumper %hash;
### 出力
$VAR1 = 'scholar';
$VAR1 = 'array1';
$VAR2 = 'array2';
$VAR3 = 'array3';
$VAR1 = 'hash1';
$VAR2 = 1;
$VAR3 = 'hash2';
$VAR4 = 2;
$VAR5 = 'hash3';
$VAR6 = 3;
print Dumper \@array;
print Dumper \%hash;
### 出力
$VAR1 = [
'array1',
'array2',
'array3'
];
$VAR1 = {
'hash1' => 1,
'hash2' => 2,
'hash3' => 3
};
複雑なネストの変数を出力
my @array = (
'array0',
['array1_1','array1_2','array1_3'],
['array2_1','array2_2',
['array2_3_1','array2_3_2','array2_3_3']
]
);
print Dumper \@array;
### 出力
$VAR1 = [
'array0',
[
'array1_1',
'array1_2',
'array1_3'
],
[
'array2_1',
'array2_2',
[
'array2_3_1',
'array2_3_2',
'array2_3_3'
]
]
];
my $data = {
'name' => 'tatsuya',
'age' => 48,
'favorite' => [
'古生物',
'将棋',
"B'z"
],
'reading' => {
'SF' => '法治の獣',
'Horror' => '屍鬼',
'Fantasy' => '十二国記',
'Mystery' => '荊の城'
}
};
print Dumper $data;
### 出力
$VAR1 = {
'reading' => {
'Horror' => '屍鬼',
'Fantasy' => '十二国記',
'Mystery' => '荊の城',
'SF' => '法治の獣'
},
'name' => 'tatsuya',
'favorite' => [
'古生物',
'将棋',
'B\'z'
],
'age' => 48
};
ネストしたハッシュのリストを出力
my @users = (
{
id => 1,
name => '御堂綱紀',
contact => {
email => 'tsunanori@example.com',
phone => '090-1234-5678',
},
roles => ['admin', 'editor'],
},
{
id => 2,
name => 'アメイヤ・アシュリン',
contact => {
email => 'ameya@example.com',
phone => '080-8765-4321',
},
roles => ['viewer'],
},
);
print Dumper \@users;
### 出力
$VAR1 = [
{
'roles' => [
'admin',
'editor'
],
'id' => 1,
'contact' => {
'phone' => '090-1234-5678',
'email' => 'tsunanori@example.com'
},
'name' => '御堂綱紀'
},
{
'contact' => {
'phone' => '080-8765-4321',
'email' => 'ameya@example.com'
},
'name' => 'アメイヤ・アシュリン',
'id' => 2,
'roles' => [
'viewer'
]
}
];
配列のキーをソートして出力
$Data::Dumper::Sortkeys = 1;
print Dumper \@users;
### 出力
$VAR1 = [
{
'contact' => {
'email' => 'tsunanori@example.com',
'phone' => '090-1234-5678'
},
'id' => 1,
'name' => '御堂綱紀',
'roles' => [
'admin',
'editor'
]
},
{
'contact' => {
'email' => 'ameya@example.com',
'phone' => '080-8765-4321'
},
'id' => 2,
'name' => 'アメイヤ・アシュリン',
'roles' => [
'viewer'
]
}
];
インデントのスタイル変更
$Data::Dumper::Indent で設定可能。
perldoc.jpによると、
インデントのスタイルを制御します。0, 1, 2, 3を指定できます。スタイル0はリストの 項目間に改行、インデント、スペースを一切含めずに出力します。もっともコンパクトな形式ですが、 perlとして実行可能です。スタイル1は改行ありで読みやすい形ですが、見やすいインデントが ありません(それぞれの構造におけるレベルは、単に固定長のスペースでインデントされています)。 スタイル2(デフォルト)はとても読みやすい形式で、ハッシュキーが揃っています。 スタイル3はスタイル2に似ていますが、配列の要素にインデックス数が付記されます(ただし、 付記は独立した行なので、配列の出力は2倍の行を消費します)。スタイル2がデフォルトです。
とのこと。
$Data::Dumper::Indent = 0;
print Dumper \@users;
### 出力
$VAR1 = [{'contact' => {'phone' => '090-1234-5678','email' => 'tsunanori@example.com'},'roles' => ['admin','editor'],'id' => 1,'name' => '御堂綱紀'},{'roles' => ['viewer'],'contact' => {'phone' => '080-8765-4321','email' => 'ameya@example.com'},'name' => 'アメイヤ・アシュリン','id' => 2}];
$Data::Dumper::Indent = 1;
print Dumper \@users;
### 出力
$VAR1 = [
{
'name' => '御堂綱紀',
'roles' => [
'admin',
'editor'
],
'contact' => {
'email' => 'tsunanori@example.com',
'phone' => '090-1234-5678'
},
'id' => 1
},
{
'contact' => {
'phone' => '080-8765-4321',
'email' => 'ameya@example.com'
},
'id' => 2,
'name' => 'アメイヤ・アシュリン',
'roles' => [
'viewer'
]
}
];
$Data::Dumper::Indent = 2;
print Dumper \@users;
### 出力
$VAR1 = [
{
'roles' => [
'admin',
'editor'
],
'name' => '御堂綱紀',
'contact' => {
'phone' => '090-1234-5678',
'email' => 'tsunanori@example.com'
},
'id' => 1
},
{
'name' => 'アメイヤ・アシュリン',
'id' => 2,
'contact' => {
'email' => 'ameya@example.com',
'phone' => '080-8765-4321'
},
'roles' => [
'viewer'
]
}
];
$Data::Dumper::Indent = 3;
print Dumper \@users;
### 出力
$VAR1 = [
#0
{
'id' => 1,
'roles' => [
#0
'admin',
#1
'editor'
],
'name' => '御堂綱紀',
'contact' => {
'phone' => '090-1234-5678',
'email' => 'tsunanori@example.com'
}
},
#1
{
'name' => 'アメイヤ・アシュリン',
'id' => 2,
'roles' => [
#0
'viewer'
],
'contact' => {
'phone' => '080-8765-4321',
'email' => 'ameya@example.com'
}
}
];
XAMPP環境にStrawberry Perlを導入する方法:Windowsでの設定手順
2025.01.27
Windows版XAMPPに同梱されている簡易版Perlを、より機能豊富なStrawberry Perlに置き換える手順を解説します。ダウンロードから環境変数の設定、動作確認まで、順を追って説明しています。
Perl XAMPP
PHPとPerlでファイルパーミッションを変更する方法(chmod関数)
2024.11.16
PHPとPerlには、ファイルのパーミッションを変更するためのchmod関数が標準で用意されています。この記事では、PHPとPerlそれぞれのchmod関数を使ったファイルパーミッション変更の基本的な使い方を紹介します。
Perl PHP
perlでの文字列置換と数値抽出の方法
2023.04.26
perlで特定の文字列から末尾のカンマ区切りの数値部分を抽出する方法を紹介します。s/// 演算子を使った文字列置換の例と、数値が含まれているかを正規表現でチェックする方法を解説します。
Perl
perlでMySQLを操作する基本的なテンプレート
2023.04.08
perlでMySQLデータベースを操作するための基本的なテンプレートを紹介します。DBIモジュールを使用してデータベースに接続し、SQLクエリを実行する方法を解説。
MySQL Perl