Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery

Re^3: Pattern matching regex problem

by hippo (Bishop)
on Nov 23, 2021 at 10:01 UTC ( #11139050=note: print w/replies, xml ) Need Help??

in reply to Re^2: Pattern matching regex problem
in thread Pattern matching regex problem

If all you want to do is check the presence of M using tr/// then it is simple:

#!/usr/bin/env perl use strict; use warnings; my $s='IIIIIIIIIIIIIIIIIIIIIIIIIIOOOOOSSSSS'; print "$s: " . ($s =~ tr/M/M/ ? "case1\n" : "case2\n"); $s .= 'M'; print "$s: " . ($s =~ tr/M/M/ ? "case1\n" : "case2\n");


Replies are listed 'Best First'.
Re^4: Pattern matching regex problem
by bibliophile (Prior) on Nov 23, 2021 at 15:00 UTC

    Or, if you don't care about tr///:

    if ($s =~ /M/) { print "case1\n"; } else { print "case2\n"; }

      tr should be faster, though.

Re^4: Pattern matching regex problem
by ikegami (Patriarch) on Nov 23, 2021 at 21:00 UTC

    tr/M// is sufficient.

      Indeed it is ... as any golfer would know. :) Speaking of which, note that y is an oddball synonym for tr -- added, not for golfers (because code golf didn't exist back then), but to entice diehard sed devotees to the new frontier of Perl. I have to give a further honourable mention to y///c -- aka Abigail's length horror -- because it's one character shorter than the prosaic length.

      Finally, note that Perl's flexibility of being able to choose your own delimiter has made tr a favourite of obfuscators (and bored golfers) ... as I remember from this amusing expression:

      employed in a (non-winning) entry in the pioneering Get Even golf game of 2002.

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11139050]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (3)
As of 2022-05-18 14:28 GMT
Find Nodes?
    Voting Booth?
    Do you prefer to work remotely?

    Results (71 votes). Check out past polls.