diff --git a/perlmod/src/value.rs b/perlmod/src/value.rs index 3a071da..778358d 100644 --- a/perlmod/src/value.rs +++ b/perlmod/src/value.rs @@ -68,16 +68,23 @@ impl Value { /// Bless a reference into a package. The `Value` must be a reference. pub fn bless(&self, package: &str) -> Result { let pkgsv = Scalar::new_string(package); + self.bless_sv(&pkgsv) + } + + pub fn bless_sv(&self, pkgsv: &ScalarRef) -> Result { let stash = unsafe { ffi::RSPL_gv_stashsv(pkgsv.sv(), 0) }; if stash.is_null() { - return Err(Error(format!("failed to find package {:?}", package))); + return Err(Error(format!( + "failed to find package {:?}", + pkgsv.pv_utf8() + ))); } let value = unsafe { ffi::RSPL_sv_bless(self.sv(), stash) }; if value.is_null() { return Err(Error(format!( "failed to bless value into package {:?}", - package + pkgsv.pv_utf8() ))); }