A bit tedious then:
#!/usr/bin/perl use warnings; use strict; use Test::More; sub mask { my $num = shift; my ($begin, $end) = (q{}, q{});; $begin .= substr $num, 0, 1, q{} until 7 == $begin =~ tr/0-9 +//; $num = substr($begin, -1, 1, q{}) . $num; $end = substr($num, -1, 1, q{}) . $end until 5 == $end =~ tr/0-9 +//; $num .= substr $end, 0, 1, q{}; $num =~ tr/0-9/X/; return $begin . $num . $end; } is(mask($_->[0]), $_->[1]) for ( ['1234 5678 1234 5678' , '1234 56XX XXXX 5678'], ['1234567812345678' , '123456XXXXXX5678'], ['5413 21069873210200' , '5413 21XXXXXXXX0200'], ['541321069873210200' , '541321XXXXXXXX0200'], ['1234/1234-5678-9012:34' , '1234/12XX-XXXX-XX12:34'] ); done_testing();
Update: Fixed error in tr, thanks, jwkrahn.

In reply to Re^3: numbers masking by choroba
in thread numbers masking by Anonymous Monk

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.