#!/usr/bin/perl use strict; use warnings; use Test::More tests => 8; use Data::Dumper qw( Dumper ); use DBM::Deep qw(); use File::Temp qw( tempfile ); my ($fh, $fn) = tempfile(); my $db = DBM::Deep->new( $fn ); sub _u { utf8::upgrade( my $s = $_[0] ); $s } sub _d { utf8::downgrade( my $s = $_[0] ); $s } $db->{A} = "\x61"; $db->{B} = _d("\xA0"); $db->{C} = _u("\xA0"); $db->{D} = "\x{2660}"; $db->{"\x61" } = 1; $db->{_d("\xA0")} = 1; $db->{_u("\xA0")} = 1; $db->{"\x{2660}"} = 1; my @keys = sort keys %$db; is( 0+@keys, 7, "Num keys" ) or diag('Got ' . do { local $Data::Dumper::Useqq = 1; local $Data::Dumper::Terse = 1; local $Data::Dumper::Indent = 0; Dumper(\@keys) }); is( $keys[4], "\x61", "7-bit key" ); is( $keys[5], "\xA0", "8-bit key" ); is( $keys[6], "\x{2660}", "32-bit key" ); is( $db->{A}, "\x61", "7-bit val" ); is( $db->{B}, "\xA0", "8-bit val (UTF8=0)" ); is( $db->{C}, "\xA0", "8-bit val (UTF8=1)" ); is( $db->{D}, "\x{2660}", "32-bit val" );