X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2F_Util.pm;h=e2a9bbf9bf8a2e5485096b367a41d0228fe0e47e;hb=d7d45bdc6577c020f62cfbf6767431a1c41a351f;hp=83bca471c24b193e2f8806f00d658a35a0786041;hpb=8d73fcd44e0441f0252744be32bada6816c5ff6b;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/_Util.pm b/lib/DBIx/Class/_Util.pm index 83bca47..e2a9bbf 100644 --- a/lib/DBIx/Class/_Util.pm +++ b/lib/DBIx/Class/_Util.pm @@ -53,7 +53,9 @@ BEGIN { # Carp::Skip to the rescue soon use DBIx::Class::Carp '^DBIx::Class|^DBICTest'; +use B (); use Carp 'croak'; +use Storable 'nfreeze'; use Scalar::Util qw(weaken blessed reftype); use List::Util qw(first); @@ -61,8 +63,14 @@ use List::Util qw(first); # BEGIN pre-Moo2 import block BEGIN { my $initial_fatal_bits = (${^WARNING_BITS}||'') & $warnings::DeadBits{all}; + local $ENV{PERL_STRICTURES_EXTRA} = 0; - require Sub::Quote; Sub::Quote->import('quote_sub'); + # load all of these now, so that lazy-loading does not escape + # the current PERL_STRICTURES_EXTRA setting + require Sub::Quote; + require Sub::Defer; + + Sub::Quote->import('quote_sub'); ${^WARNING_BITS} &= ( $initial_fatal_bits | ~ $warnings::DeadBits{all} ); } sub qsub ($) { goto "e_sub } # no point depping on new Moo just for this @@ -73,7 +81,7 @@ our @EXPORT_OK = qw( sigwarn_silencer modver_gt_or_eq fail_on_internal_wantarray fail_on_internal_call refdesc refcount hrefaddr is_exception - quote_sub qsub perlstring + quote_sub qsub perlstring serialize UNRESOLVABLE_CONDITION ); @@ -108,12 +116,16 @@ sub refdesc ($) { sub refcount ($) { croak "Expecting a reference" if ! length ref $_[0]; - require B; # No tempvars - must operate on $_[0], otherwise the pad # will count as an extra ref B::svref_2object($_[0])->REFCNT; } +sub serialize ($) { + local $Storable::canonical = 1; + nfreeze($_[0]); +} + sub is_exception ($) { my $e = $_[0];