http://www.perlmonks.org?node_id=1019248


in reply to Re^3: match sequences of words based on number of characters
in thread match sequences of words based on number of characters

#!/usr/bin/perl -- use strict; use warnings; use Data::Dump; my $str = "xxxx yy zzzzz xxxx qqq sixsix"; my $lengthy = do { my @lengths = ( 2, 6, 6 ); my $lix = 0; sub { warn "shabba @_ $_"; if( $lix < @lengths and $lengths[ $lix ] == length $_ ){ $lix++; return !!1; } return !!0; } }; #~ grep 1, #~ my @list = grep $lengthy, split /\W/, $str; #~ grep 1, #~ my @list = grep sub { $lengthy->() }, split /\W/, $str; #~ slower #~ my @list = grep { $lengthy->() } split /\W/, $str; my @list = grep $lengthy->() , split /\W/, $str; dd \@list; __END__ shabba xxxx at funk line 8. shabba yy at funk line 8. shabba zzzzz at funk line 8. shabba xxxx at funk line 8. shabba qqq at funk line 8. shabba sixsix at funk line 8. ["yy", "sixsix"]