#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
#include "ppport.h"
MODULE = Data::Reuse PACKAGE = Data::Reuse
void
key_as_sv( hv, key, val )
HV *hv
SV *key
SV *val
PROTOTYPE: \%$$
CODE:
SvREFCNT_inc(key);
SvREFCNT_inc(val);
STRLEN length = SvCUR(key);
hv_store( hv, SvPV( key, length ), length , val, 0 );
HE *he = hv_fetch_ent( hv, key, 0, 0 );
HeSVKEY_set( he, key );
####
my %hash;
my $foo = 'foo';
Data::Reuse::key_as_sv( %hash, $foo, $foo );
print STDERR "found ".(keys %hash)." keys:\n";
print STDERR " $_: $hash{$_}\n" foreach keys %hash;
####
found 1 keys:
foo: