NAME
`stringification' - allow or forbid implicitly converting references
into strings
SYNOPSIS
no stringification;
my $array = [ 1, 2, 3 ];
print "My array is $array\n"; # dies
DESCRIPTION
Normally in Perl, a reference may be implicitly converted into a string,
usually of a form like `HASH(0x1234567)'.
This module provides a lexically-scoped pragma which alters the
behaviour of the following operations:
"$ref" # stringify
$ref . "foo" # concat
lc $ref
lcfirst $ref
uc $ref
ucfirst $ref
quotemeta $ref
$ref =~ m//
split //, $ref
join $ref, @strs
join "", $ref
print $ref
say $ref
When disabled by `no stringification', all of these operations will fail
with an exception when invoked on a non-object reference.
$ perl -E 'no stringification; my $arr = []; say "Array is $arr"'
Attempted to concat a reference at -e line 1.
The effects of this module are lexically scoped; to re-enable
stringification of references during a lexical scope, `use
stringification' again.
TODO
* More testing, especially around interoperatbility with other
op-hooking modules.
* Hook more ops; including
$ref =~ s///;
s//$ref/;
substr( $ref, 0, 0 )
substr( $str, 0, 0, $ref )
substr( $str, 0, 0 ) = $ref
* Consider whether to detect for objects that don't have overload
magic, and forbid these too.
* A mode where string conversions just give warnings, rather than
outright failures.
no stringification 'warn';
AUTHOR
Paul Evans <leonerd@leonerd.org.uk>