my changeEncoding { my $self = shift; my $stringToEncode = shift; my $EncodedString = Encode::utf8_encode{'$stringToEncode'}; print " $EncodedString "; <-- absolutely fine here . return $EncodedString; } sub getEncodedString { my $encodedString = changeEncoding(MultiByteChar); print $encodedString ; <--This is garbage here. }