in reply to How to test for sameness on a string of numbers
G'day willk1980,
Your sample data contains groupings of 9-digit (not 10-digit) numbers:
$ perl -Mstrict -Mwarnings -E ' my @originals = (5125670001, 5125760002, 5125760003); my @inputs = qw{ 512567001512567002512567003 512567002512567001512567003 512567003512567001512567002 }; my $canon_original = join q{} => sort @originals; for (@inputs) { my $canon_input = join q{} => sort /(\d{10})/g; say "$_ is ", ($canon_input eq $canon_original) ? "same" : "no +t same"; } ' 512567001512567002512567003 is not same 512567002512567001512567003 is not same 512567003512567001512567002 is not same
Changing the 00[1-3] to 000[1-3] to make them 10-digit groupings:
$ perl -Mstrict -Mwarnings -E ' my @originals = (5125670001, 5125760002, 5125760003); my @inputs = qw{ 512567000151256700025125670003 512567000251256700015125670003 512567000351256700015125670002 }; my $canon_original = join q{} => sort @originals; for (@inputs) { my $canon_input = join q{} => sort /(\d{10})/g; say "$_ is ", ($canon_input eq $canon_original) ? "same" : "no +t same"; } ' 512567000151256700025125670003 is not same 512567000251256700015125670003 is not same 512567000351256700015125670002 is not same
Reversing the order of 67 in each instance of 5125670002 and 5125670003 to match the originals:
$ perl -Mstrict -Mwarnings -E ' my @originals = (5125670001, 5125760002, 5125760003); my @inputs = qw{ 512567000151257600025125760003 512576000251256700015125760003 512576000351256700015125760002 }; my $canon_original = join q{} => sort @originals; for (@inputs) { my $canon_input = join q{} => sort /(\d{10})/g; say "$_ is ", ($canon_input eq $canon_original) ? "same" : "no +t same"; } ' 512567000151257600025125760003 is same 512576000251256700015125760003 is same 512576000351256700015125760002 is same
-- Ken
|
|---|