#!/usr/bin/perl -w use strict; use Benchmark; my @ccs=('1234 123 123 123 312', '1234 1234 1234 4321', '1234123123123123'); timethese ( 20000, { 'split'=>sub { my(@bits, $cc, $n); foreach (@ccs) { print "$_ => "; $cc=$_; @bits = split /(\s)/, $cc; foreach $n (@bits[1..($#bits-1)]) { $n=~tr/0123456789/x/ } $cc=join '', @bits; print "$cc\n"; } }, 'regex-mine'=>sub { my($x, $cc); foreach (@ccs) { print "$_ => "; $cc=$_; $cc=~ s(^(\d+)(.+?)(\d+)$) ( $x = $2; $x =~ tr/0123456789/x/; "$1$x$3" )e; print "$cc\n"; } }, 'regex-tkil'=>sub { my($x, $cc); foreach (@ccs) { print "$_ => "; $cc=$_; if($cc=~ m(^(\d+)(\D+(?:\d+\D*?)+\D+)(\d+)$)) { $x = $2; $x =~ tr/0123456789/x/; $cc="$1$x$3"; } print "$cc\n"; } }, 'regex-silmaril'=>sub { my($x, $cc); foreach (@ccs) { print "$_ => "; $cc=$_; $cc=~ s((\D)(\d+)(\D)) ($1.('x'x length($2)).$3)eg; print "$cc\n"; } }, 'substr'=>sub { my($cc, $a, $b); foreach (@ccs) { print "$_ => "; $cc=$_; $a=index($cc, ' ')||4; $a=4 if $a>4; $b=(rindex($cc, ' ')-$a)||3; $b=3 if $b>3; substr($cc, $a, $b) =~ s/\d/x/g; print "$cc\n"; } } });