perl-unicode

DBM_Filter with encode() on EBCDIC fails

2005-09-09 05:35:09
Hi
 I am using perl-5.8.6 on EBCDIC platform and I encounter a test 
case(lib/DBM_Filter/t/encode.t) failing
 The VerifyData sub routine expects the key as 'euro' where as on EBCDIC, I 
get the key as '/Ä>,'
can you explain me why this is happening?
 

use strict;
use warnings;
use Carp;
BEGIN 
{

eval { require Encode; };
if ($@) {
print "1..0 # Skip: Encode is not available\n";
exit 0;
}
}


require "dbm_filter_util.pl";
# use charnames qw{greek};
use Test::More tests => 26;

BEGIN { use_ok('DBM_Filter') };
BEGIN { use_ok('SDBM_File') };
BEGIN { use_ok('Fcntl') };

unlink <Op_dbmx*>;
END { unlink <Op_dbmx*>; }

my %h1 = () ;
my $db1 = tie(%h1, 'SDBM_File','Op_dbmx', O_RDWR|O_CREAT, 0640) ;

eval { $db1->Filter_Push('encode' => 'iso-8859-16') };
is $@, '', "push an 'encode' filter (specify iso-8859-16)" ;
use charnames qw{:full};
StoreData(\%h1,
{ 
'euro' => "\N{EURO SIGN}", 
});


undef $db1;
{
use warnings FATAL => 'untie';
eval { untie %h1 };
is $@, '', "untie without inner references" ;
}

# read the dbm file without the filter
my %h2 = () ;
my $db2 = tie(%h2, 'SDBM_File','Op_dbmx', O_RDWR|O_CREAT, 0640) ;

ok $db2, "tied to SDBM_File";

VerifyData(\%h2,
{
'euro' => "\xA4", 
});

undef $db2;
{
use warnings FATAL => 'untie';
eval { untie %h2 };
is $@, '', "untie without inner references" ;
}
<Prev in Thread] Current Thread [Next in Thread>
  • DBM_Filter with encode() on EBCDIC fails, Sastry <=