print $& if $var =~ /^[1-3]$/; #### sub look_into { my $archetype= shift; eval 'sub { $_[0] =~ /$archetype/o; }' } my $is_text_am_too_red = look_into q/\b(am|too|red)\b/; my $single_digit_in_range = look_into q/^[1-5]$/; my $double_digit_in_set = look_into q/^[5-7][49]$/; # etc. if($is_text_am_too_red ->($_)){ print "get some sleep!" } if($single_digit_in_range ->($_)){ print "single digit in range!" } if($double_digit_in_set ->($_)){ print "double digit in set!" } #etc.