diff --git a/servers/slapd/back-perl/add.c b/servers/slapd/back-perl/add.c
index 2fb9b9e00dffec5d1a3fcb6bae1296dada641016..0df962b422824041948711a2ea9f0b31342cbd6f 100644
--- a/servers/slapd/back-perl/add.c
+++ b/servers/slapd/back-perl/add.c
@@ -35,7 +35,7 @@ perl_back_add(
 
 		PUSHMARK(sp);
 		XPUSHs( perl_back->pb_obj_ref );
-		XPUSHs(sv_2mortal(newSVpv( entry2str( op->ora_e, &len ), 0 )));
+		XPUSHs(sv_2mortal(newSVpv( entry2str( op->ora_e, &len ), len )));
 
 		PUTBACK;
 
diff --git a/servers/slapd/back-perl/bind.c b/servers/slapd/back-perl/bind.c
index 5b6c8e7d88654c4f8cd60f2b157d100bb0d57fb3..192b403fd512e34415bf04c8823e1479ad2a01ed 100644
--- a/servers/slapd/back-perl/bind.c
+++ b/servers/slapd/back-perl/bind.c
@@ -50,7 +50,7 @@ perl_back_bind(
 
 		PUSHMARK(SP);
 		XPUSHs( perl_back->pb_obj_ref );
-		XPUSHs(sv_2mortal(newSVpv( op->o_req_dn.bv_val , 0)));
+		XPUSHs(sv_2mortal(newSVpv( op->o_req_dn.bv_val , op->o_req_dn.bv_len)));
 		XPUSHs(sv_2mortal(newSVpv( op->orb_cred.bv_val , op->orb_cred.bv_len)));
 		PUTBACK;
 
diff --git a/servers/slapd/back-perl/compare.c b/servers/slapd/back-perl/compare.c
index 0bd3dd6dfa219ac1d0715bb5484a32aed6860960..7cb561401df5552021b80e5f1d4e2ca5f5415a75 100644
--- a/servers/slapd/back-perl/compare.c
+++ b/servers/slapd/back-perl/compare.c
@@ -29,14 +29,15 @@ perl_back_compare(
 	Operation	*op,
 	SlapReply	*rs )
 {
-	int count;
+	int count, avalen;
 	char *avastr;
 
 	PerlBackend *perl_back = (PerlBackend *)op->o_bd->be_private;
 
-	avastr = ch_malloc( op->orc_ava->aa_desc->ad_cname.bv_len + 1 +
-		op->orc_ava->aa_value.bv_len + 1 );
-	
+	avalen = op->orc_ava->aa_desc->ad_cname.bv_len + 1 +
+		op->orc_ava->aa_value.bv_len;
+	avastr = ch_malloc( avalen + 1 );
+
 	lutil_strcopy( lutil_strcopy( lutil_strcopy( avastr,
 		op->orc_ava->aa_desc->ad_cname.bv_val ), "=" ),
 		op->orc_ava->aa_value.bv_val );
@@ -49,8 +50,8 @@ perl_back_compare(
 
 		PUSHMARK(sp);
 		XPUSHs( perl_back->pb_obj_ref );
-		XPUSHs(sv_2mortal(newSVpv( op->o_req_dn.bv_val , 0)));
-		XPUSHs(sv_2mortal(newSVpv( avastr , 0)));
+		XPUSHs(sv_2mortal(newSVpv( op->o_req_dn.bv_val , op->o_req_dn.bv_len)));
+		XPUSHs(sv_2mortal(newSVpv( avastr , avalen)));
 		PUTBACK;
 
 		count = call_method("compare", G_SCALAR);
diff --git a/servers/slapd/back-perl/delete.c b/servers/slapd/back-perl/delete.c
index 80c96074808aa1559f47115010c533e484c6af5f..f72a540697d9a34feb17c58a85d9206696297505 100644
--- a/servers/slapd/back-perl/delete.c
+++ b/servers/slapd/back-perl/delete.c
@@ -33,7 +33,7 @@ perl_back_delete(
 
 		PUSHMARK(sp);
 		XPUSHs( perl_back->pb_obj_ref );
-		XPUSHs(sv_2mortal(newSVpv( op->o_req_dn.bv_val , 0 )));
+		XPUSHs(sv_2mortal(newSVpv( op->o_req_dn.bv_val , op->o_req_dn.bv_len )));
 
 		PUTBACK;
 
diff --git a/servers/slapd/back-perl/modrdn.c b/servers/slapd/back-perl/modrdn.c
index 31ff2001d517d96239670760e73e7dee0fa30c29..dcfb080c469e85efe3beaf8c0036b49a661471c4 100644
--- a/servers/slapd/back-perl/modrdn.c
+++ b/servers/slapd/back-perl/modrdn.c
@@ -33,11 +33,11 @@ perl_back_modrdn(
 		
 		PUSHMARK(sp) ;
 		XPUSHs( perl_back->pb_obj_ref );
-		XPUSHs(sv_2mortal(newSVpv( op->o_req_dn.bv_val , 0 )));
-		XPUSHs(sv_2mortal(newSVpv( op->orr_newrdn.bv_val , 0 )));
+		XPUSHs(sv_2mortal(newSVpv( op->o_req_dn.bv_val , op->o_req_dn.bv_len )));
+		XPUSHs(sv_2mortal(newSVpv( op->orr_newrdn.bv_val , op->orr_newrdn.bv_len )));
 		XPUSHs(sv_2mortal(newSViv( op->orr_deleteoldrdn )));
 		if ( op->orr_newSup != NULL ) {
-			XPUSHs(sv_2mortal(newSVpv( op->orr_newSup->bv_val , 0 )));
+			XPUSHs(sv_2mortal(newSVpv( op->orr_newSup->bv_val , op->orr_newSup->bv_len )));
 		}
 		PUTBACK ;
 
diff --git a/servers/slapd/back-perl/search.c b/servers/slapd/back-perl/search.c
index c7428010f816d4c1d8da5ac6b8469d0d958c041d..220e89c77987b78ad78d7b5e57880a8a91379051 100644
--- a/servers/slapd/back-perl/search.c
+++ b/servers/slapd/back-perl/search.c
@@ -42,16 +42,16 @@ perl_back_search(
 
 		PUSHMARK(sp) ;
 		XPUSHs( perl_back->pb_obj_ref );
-		XPUSHs(sv_2mortal(newSVpv( op->o_req_ndn.bv_val , 0)));
+		XPUSHs(sv_2mortal(newSVpv( op->o_req_ndn.bv_val , op->o_req_ndn.bv_len)));
 		XPUSHs(sv_2mortal(newSViv( op->ors_scope )));
 		XPUSHs(sv_2mortal(newSViv( op->ors_deref )));
 		XPUSHs(sv_2mortal(newSViv( op->ors_slimit )));
 		XPUSHs(sv_2mortal(newSViv( op->ors_tlimit )));
-		XPUSHs(sv_2mortal(newSVpv( op->ors_filterstr.bv_val , 0)));
+		XPUSHs(sv_2mortal(newSVpv( op->ors_filterstr.bv_val , op->ors_filterstr.bv_len)));
 		XPUSHs(sv_2mortal(newSViv( op->ors_attrsonly )));
 
 		for ( an = op->ors_attrs; an && an->an_name.bv_val; an++ ) {
-			XPUSHs(sv_2mortal(newSVpv( an->an_name.bv_val , 0)));
+			XPUSHs(sv_2mortal(newSVpv( an->an_name.bv_val , an->an_name.bv_len)));
 		}
 		PUTBACK;