From: Peter Rabbitson Date: Mon, 8 Mar 2010 22:48:59 +0000 (+0000) Subject: De-golf X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=f39eaa60a7de723ecbe775295bd485235a9928d3;p=scpubgit%2FQ-Branch.git De-golf --- diff --git a/lib/SQL/Abstract.pm b/lib/SQL/Abstract.pm index 47f7c97..94b4bb2 100644 --- a/lib/SQL/Abstract.pm +++ b/lib/SQL/Abstract.pm @@ -1188,19 +1188,29 @@ sub _try_refkind { sub _METHOD_FOR_refkind { my ($self, $meth_prefix, $data) = @_; - my $method = List::Util::first {$_} map {$self->can($meth_prefix."_".$_)} - $self->_try_refkind($data) - or puke "cannot dispatch on '$meth_prefix' for ".$self->_refkind($data); - return $method; + + my $method; + for ($self->_try_refkind($data)) { + $method = $self->can($meth_prefix."_".$_) + and last; + } + + return $method || puke "cannot dispatch on '$meth_prefix' for ".$self->_refkind($data); } sub _SWITCH_refkind { my ($self, $data, $dispatch_table) = @_; - my $coderef = List::Util::first {$_} map {$dispatch_table->{$_}} - $self->_try_refkind($data) - or puke "no dispatch entry for ".$self->_refkind($data); + my $coderef; + for ($self->_try_refkind($data)) { + $coderef = $dispatch_table->{$_} + and last; + } + + puke "no dispatch entry for ".$self->_refkind($data) + unless $coderef; + $coderef->(); }