X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FSchema%2FLoader%2FUtils.pm;h=8b52e17004aae467087d57d69c5d1564001ccff8;hb=c38ec663ec7b40c65613e5ec26542672b15cdbde;hp=5371dab1947b1afafddb5ae0b85e630e91fd1208;hpb=53e721bce0ce6df2b721c52ec331a8098e55b533;p=dbsrgits%2FDBIx-Class-Schema-Loader.git diff --git a/lib/DBIx/Class/Schema/Loader/Utils.pm b/lib/DBIx/Class/Schema/Loader/Utils.pm index 5371dab..8b52e17 100644 --- a/lib/DBIx/Class/Schema/Loader/Utils.pm +++ b/lib/DBIx/Class/Schema/Loader/Utils.pm @@ -5,7 +5,7 @@ use strict; use warnings; use Exporter 'import'; -our @EXPORT_OK = qw/split_name dumper dumper_squashed/; +our @EXPORT_OK = qw/split_name dumper dumper_squashed eval_without_redefine_warnings/; use constant BY_CASE_TRANSITION => qr/(?<=[[:lower:]\d])[\W_]*(?=[[:upper:]])|[\W_]+/; @@ -37,5 +37,17 @@ sub dumper_squashed($) { return $dd->Values([ $val ])->Dump; } +sub eval_without_redefine_warnings { + my $code = shift; + + my $warn_handler = $SIG{__WARN__} || sub { warn @_ }; + local $SIG{__WARN__} = sub { + $warn_handler->(@_) + unless $_[0] =~ /^Subroutine \S+ redefined/; + }; + eval $code; + die $@ if $@; +} + 1; # vim:et sts=4 sw=4 tw=0: