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


in reply to hash keys and regex

Not sure if this makes things easier for you or not, but you could make use of Quantum::Superpositions:

#! /usr/bin/perl -w use strict; use Quantum::Superpositions; my @filter = ( any( qw/ aa ab / ), any( qw/ bb bc bd / ), any( qw/ cc cd / ), any( qw/ dd de df / ) ); my @tests = ( 'aa_bb123_cd_de', 'bc_bb_bd_be32', 'ab3_bc_cc45_df', 'aa12_aa34_aa56_aa78' ); for my $testcase ( @tests ) { if ( $testcase =~ /(\w{2})\d*_(\w{2})\d*_(\w{2})\d*_(\w{2})\d*/ ) { # Meets the form; does it pass the filter? if ( $1 eq $filter[0] && $2 eq $filter[1] && $3 eq $filter[2] && $4 eq $filter[3] ) { print "PASS: $testcase$/"; } else { print "FAIL: $testcase$/"; } } else { print "FAIL: $testcase: Incorrect format$/"; } } __END__

_______________
DamnDirtyApe
Those who know that they are profound strive for clarity. Those who
would like to seem profound to the crowd strive for obscurity.
            --Friedrich Nietzsche

Replies are listed 'Best First'.
Re^2: hash keys and regex
by state-o-dis-array (Hermit) on Dec 23, 2004 at 19:06 UTC
    Thanks, that looks like a good module to know, in fact, there are a couple of projects that it might be helpful with. In this case, though, there is one thing that I can see that I need to clarify. The cases that I'm testing might also look like aa_cd or cd_fg_hh123_lm, etc.