Manchmal steckt in einem String nicht das drin, was man erwartet, z.B. nicht druckbare oder UTF Zeichen.
String::Dump - Dump strings of characters (or bytes) for printing and debugging von Nick Patch vereinfacht das Debuggen solcher Probleme erheblich.
Bei Byte-Strings wird jedes Byte, bei Unicode-Strings wird jeder Codepoint ausgegeben.
String::Dump stellt sechs unterschiedliche Ausgabeformate über folgende Funktionen zur Verfügung.
- dump_hex($string): Hexadecimal (base 16) mode
- dump_dec($string): Decimal (base 10) mode
- dump_oct($string): Octal (base 8) mode
- dump_bin($string): Binary (base 2) mode
- dump_names($string): Unicode character name mode
- dump_codes($string): Unicode code point mode
Freunde der Kommandozeile sollten einen Blick auf mitgelieferte Tool dumpstr werfen.
Beispiel
Statt vieler Worte ein einfaches Beispiel:
#!/usr/bin/perl use strict; use warnings; use utf8; use String::Dump qw( :all ); my $string = 'Føø Bār'; print dump_hex($string), "\n"; print dump_dec($string), "\n"; print dump_oct($string), "\n"; print dump_bin($string), "\n"; print dump_names($string), "\n"; print dump_codes($string), "\n";
Das Programm erzeugt folgende Ausgabe:
46 F8 F8 20 42 101 72 70 248 248 32 66 257 114 106 370 370 40 102 401 162 1000110 11111000 11111000 100000 1000010 100000001 1110010 LATIN CAPITAL LETTER F, LATIN SMALL LETTER O WITH STROKE, LATIN SMALL LETTER O WITH STROKE, SPACE, LATIN CAPITAL LETTER B, LATIN SMALL LETTER A WITH MACRON, LATIN SMALL LETTER R U+0046 U+00F8 U+00F8 U+0020 U+0042 U+0101 U+0072
Siehe auch:
- String::Dump
- dumpstr
- String::Dump::Debugging
- Template::Plugin::StringDump
- perlunicode
- Data::HexDump
- Data::Hexdumper
Also check Devel::PeekPoke's describe_bytestring. It is a dumper geared towards spotting addresses and other packed 32/64 bit values in a string.
https://metacpan.org/module/Devel::PeekPoke#describe_bytestring