[OT] Should exist / does exist?

Andy Armstrong andy at hexten.net
Wed Dec 6 20:33:49 GMT 2006


(I've searched CPAN for this but either I'm using the wrong search  
terms or it doesn't exist)

I like using closures to emulate Ruby blocks like this:

$db->withQuery(sub {
    my $row = shift;
    # Do stuff with $row
});

In this (hypothetical) case the anon closure would be called for  
every row in the results of a database query. This is how Ruby  
handles most of its looping constructs.

This works already but it'd be even nicer to be able to write

$db->withQuery(ROW => sub {
     my $row = shift;
     if ($row->{'some_value'} > $some_limit) {
         last ROW;
     }
});

In other words it'd be nice if the callback closure had something  
approaching normal loop semantics: next, redo and last would DWIM.

Have I missed a module that already does this?

You can fake it at the moment using die / eval and could probably  
implement it properly with either a source filter or by decompiling  
and munging the closure.

Before I have a play with it has anyone already been this way?

-- 
Andy Armstrong, hexten.net



More information about the london.pm mailing list