String::Dump - Was genau ist in einem String enthalten

Veröffentlicht von Thomas Fahle am (Permalink)

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:

 

Weitere Posts