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

Re: Regex related question

by Perlbotics (Archbishop)
on Aug 08, 2011 at 07:09 UTC ( [id://919154]=note: print w/replies, xml ) Need Help??


in reply to Regex related question

I have not benchmarked this, but it is probably faster than your current version. HTH

use warnings; use strict; while (<DATA>) { chomp; print "$_ -> "; my $len = length; if ( s/(\w)\1{2,}\Z/$1$1/ ) { $len -= length; print "$len -> $_"; } print "\n"; } __DATA__ ACTGCTAGGGGGGG TCAGCTAGCNA ACTGSCGACAAAA GTCTGAGTTATTT

Update: davido encouraged me to present my alternative version. I converted the original array based variation into a string based one, hoping (not measured) for better speed. So, in the sense of TIMTOWTDI:

use strict; use warnings; my $in = shift || 'GATATTTTTTT'; $_ = $in; my $last = substr $_, -1; if ( length > 2 and substr($_, -2, 1) eq $last ) { chop while substr($_, -1) eq $last; $_ .= $last . $last; } print "in : $in\n"; print "out: $_\n";

Replies are listed 'Best First'.
Re^2: Regex related question
by happy.barney (Friar) on Aug 08, 2011 at 08:55 UTC
    small improvement, avg 20% faster regexs/(\w)\1*(?=\1\1\Z)//
Re^2: Regex related question
by Hena (Friar) on Aug 08, 2011 at 07:24 UTC
    Elegant and simple as it should be. Thanks :).

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others having an uproarious good time at the Monastery: (3)
As of 2024-04-19 19:54 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found