http://www.perlmonks.org?node_id=970770


in reply to numbers masking

$ perl -le' my @numbers = ( "541321069873210200", "5413 21069873210200" ); my $start_at = 6; my $end_digits = 4; for ( @numbers ) { print; my $digit_count = tr/0-9//; my $replace_count = $digit_count - $end_digits; my $count = -1; s{ ( [0-9] ) }{ ++$count; $count >= $start_at && $count < $replace +_count ? "X" : $1 }xeg; print; } ' 541321069873210200 541321XXXXXXXX0200 5413 21069873210200 5413 21XXXXXXXX0200