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