Dモジュール - データをエンコードし標準エラー出力へダンプ
Dモジュールは、データをエンコードし標準エラー出力へダンプするユーティリティ関数を提供します。
利用例
Dモジュールは、以下のように利用します。
use utf8;
# du, dw, dn, dustr, dwstr, dnstr関数をexportします
use D;
# デコードされた文字列を含むデータ(リファレンス)を準備します
my $data = [{name => 'あ'}, {name => 'い'}];
# リファレンスデータをエンコード(UTF-8)し、標準エラー出力へダンプします。
du $data;
# リファレンスデータをエンコード(cp932)し、標準エラー出力へダンプします。
dw $data;
# リファレンスデータをエンコードせず、標準エラー出力へダンプします。
dn $data;
# 便利なOnelinerの例です。
use D;du $data;
use D;dw $data;
use D;dn $data;
# du関数の出力サンプルです。
[
{
'name' => 'あ'
},
{
'name' => 'い'
}
] at test.pl line 7.
特徴
- du, dw, dnなどの関数をエクスポートします。これらの関数名は、2文字のため'p' などのデバックコマンドと競合しないでください。
- dustr, dwstr関数はリファレンスデータの全ての文字列をエンコードします。
- duは'dump UTF-8'の短縮名です。
- dwは'dump Windows cp932'の短縮名です。
- dnは'dump no encoding'の短縮名です。
- Data::DumperのDump関数を使用してデータをダンプします。
- 行番号とファイル名を標準エラーへ出力します。
- ダンプされたデータのハッシュのキーでソートします。
- Data::Dumperのデフォルトとは異なり、'$VAR1 ='を出力しません。
関数
du関数
リファレンスデータ内のすべての文字列をUTF-8にエンコードし、リファレンスデータをファイル名, 行番号とともに標準エラー出力へダンプします。
引数が文字列などの参照データでない場合も、リファレンスデータと同じ方法でダンプされます。
この関数はexportされます。
use D;
my $data = [{name => 'あ'}, {name => 'い'}];
du $data;
以下の例ではワンライナーを使用しています。全ての関数で利用できます。
my $data = [{name => 'あ'}, {name => 'い'}];
use D;du $data;
dw関数
リファレンスデータ内のすべての文字列をcp932にエンコードし、リファレンスデータをファイル名, 行番号とともに標準エラー出力へダンプします。
引数が文字列などの参照データでない場合も、リファレンスデータと同じ方法でダンプされます。
この関数はexportされます。
use D;
my $data = [{name => 'あ'}, {name => 'い'}];
dw $data;
dn関数
リファレンスデータ内のすべての文字列をエンコードせず、リファレンスデータをファイル名, 行番号とともに標準エラー出力へダンプします。
引数が文字列などの参照データでない場合も、リファレンスデータと同じ方法でダンプされます。
この関数はexportされます。
use D;
my $data = [{name => 'あ'}, {name => 'い'}];
dn $data;
dustr関数
この関数はUTF-8でエンコードされた文字列を返します。
この関数はexportされます。
以下の例は、UTF-8でエンコードされた文字列を取得しています。
use D;
my $data = [{name => 'あ'}, {name => 'い'}];
my $str = dustr $data;
dwstr関数
この関数はcp932でエンコードされた文字列を返します。
この関数はexportされます。
以下の例は、cp932でエンコードされた文字列を取得しています。
use D;
my $data = [{name => 'あ'}, {name => 'い'}];
my $str = dwstr $data;
dnstr関数
この関数はエンコードせずに文字列を返します。
この関数はexportされます。
以下の例は、エンコードされない文字列を取得しています。
use D;
my $data = [{name => 'あ'}, {name => 'い'}];
my $str = dnstr $data;
バグレポート
https://github.com/YoshiyukiItoh/D
Perlゼミ

