in reply to Re: $_ works, $my_variable doesn't?
in thread $_ works, $my_variable doesn't?

Better would be $one_line =~ /[AaEeIiOoUu]/. There's no need to make the entire string case-insensitive - it's slower. Also, you're not doing alternation, but instead doing a character class match. Again, faster.

------
We are the carpenters and bricklayers of the Information Age.

Then there are Damian modules.... *sigh* ... that's not about being less-lazy -- that's about being on some really good drugs -- you know, there is no spoon. - flyingmoose

Replies are listed 'Best First'.
Re: Re: Re: $_ works, $my_variable doesn't?
by bageler (Hermit) on Mar 30, 2004 at 03:54 UTC
    When using a range it's an OR operation, not an AND, so that will also match aaaaa eeeeee iiiiiiii, etc. I don't think that's what he was looking for. revdiablo has a good explanation.
      my @strings = qw( aaaaa eeeee iiiii abcde aeiou bdfhj ); my %regexes = ( alternation => qr/a|A|e|E|i|I|o|O|u|U/, class => qr/[AaEeIiOoUu]/ ); foreach my $string (@strings) { print "$string:\n"; while (my ($k, $r) = each %regexes) { print "\t$k - " . ($string =~ /$r/ ? 'YES' : 'NO') . $/; } } --------------- aaaaa: alternation - YES class - YES eeeee: alternation - YES class - YES iiiii: alternation - YES class - YES abcde: alternation - YES class - YES aeiou: alternation - YES class - YES bdfhj: alternation - NO class - NO

      Please give me a counter-case. As far as I can tell, the two regexes are identical, save that the alternation one is slower.

      ------
      We are the carpenters and bricklayers of the Information Age.

      Then there are Damian modules.... *sigh* ... that's not about being less-lazy -- that's about being on some really good drugs -- you know, there is no spoon. - flyingmoose

        The OP was looking for strings that contain all of the vowels. Your code doesn't do that.