PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB` package Test2::Util::Ref; use strict; use warnings; our $VERSION = '1.302204'; use Scalar::Util qw/reftype blessed refaddr/; our @EXPORT_OK = qw/rtype render_ref/; use base 'Exporter'; sub rtype { my ($thing) = @_; return '' unless defined $thing; my $rf = ref $thing; my $rt = reftype $thing; return '' unless $rf || $rt; return 'REGEXP' if $rf =~ m/Regex/i; return 'REGEXP' if $rt =~ m/Regex/i; return $rt || ''; } sub render_ref { my ($in) = @_; return 'undef' unless defined($in); my $type = rtype($in); return "$in" unless $type; # Look past overloading my $class = blessed($in) || ''; my $it = sprintf('0x%x', refaddr($in)); my $ref = "$type($it)"; return $ref unless $class; my $out = "$class=$ref"; if ($class =~ m/bool/i) { my $bool = $in ? 'TRUE' : 'FALSE'; return "<$bool: $out>"; } return $out; } 1; __END__ =pod =encoding UTF-8 =head1 NAME Test2::Util::Ref - Tools for inspecting or manipulating references. =head1 DESCRIPTION These are used by L to inspect, render, or manipulate references. =head1 EXPORTS All exports are optional. You must specify subs to import. =over 4 =item $type = rtype($ref) A normalization between C and C. Always returns a string. Returns C<'REGEXP'> for regex types Returns C<''> for non-refs Otherwise returns what C returns. =item $addr_str = render_ref($ref) Always returns a string. For unblessed references this returns something like C<"SCALAR(0x...)">. For blessed references it returns C<"My::Thing=SCALAR(0x...)">. The only difference between this and C<$add_str = "$thing"> is that it ignores any overloading to ensure it is always the ref address. =back =head1 SOURCE The source code repository for Test2-Suite can be found at F. =head1 MAINTAINERS =over 4 =item Chad Granum Eexodist@cpan.orgE =back =head1 AUTHORS =over 4 =item Chad Granum Eexodist@cpan.orgE =item Kent Fredric Ekentnl@cpan.orgE =back =head1 COPYRIGHT Copyright Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See F =cut