in reply to numbers masking

$number =~ /^(\D*\d){6}/g and $number =~ s/\G(\D*)\d(?=(?:\D*\d){4})/$ +{1}X/g;

or another somewhat less cryptic approach:

my ($s, $m ,$e) = $number =~ /^((?:\D*\d){6})(.*)((?:\d\D*){4})$/; $m =~ tr/0-9/X/; $number = "$s$m$e"

or with a recent perl:

$number =~ s|^((?:\D*\d){6})(.*)(?=(?:\d\D*){4})|$1. ($2 =~ tr/0-9/X/r +)|e;

Replies are listed 'Best First'.
Re^2: numbers masking
by Anonymous Monk on May 16, 2012 at 09:12 UTC

    thnks salva. But can please explain the crytic approach(1st one)

      Well, IMO, the expression is not so complex, but you need to understand how regular expressions can be chained using \G and what look-ahead assertions do. Both things are explained in perlre.