Algori...M11_016(3pm)
π Algori...M11_016(3pm) β CheckDigits::M11_016 π
okay bestie, this is a page from the User Contributed Perl Documentation, filed under the very iconic name Algori...M11_016(3pm) (yes the dots are literally part of it, the terminal is just being shy about the full module name π«Ά). Let's get into it.
β¨ NAME β¨
CheckDigits::M11_016 β compute check digits vor VAT Registration Number (PL)
yup, "vor" β that's the original's little typo moment and we're keeping it, no cap, it's part of the lore π
πΈ SYNOPSIS πΈ
use Algorithm::CheckDigits;
$nip = CheckDigits('nip');
if ($nip->is_valid('8567346215')) {
# do something
}
$cn = $nip->complete('856734621');
# $cn = '8567346215'
$cd = $nip->checkdigit('856734621');
# $cd = '5'
$bn = $nip->basenumber('8567346215');
# $bn = '856734621';
see how tidy that is?? the whole vibe is: hand it a number, it tells you if it's valid, or it hands you back the completed / base / check-digit version. so satisfying fr fr β¨
π¦ DESCRIPTION π¦
π ALGORITHM π
okay so here's the whole recipe, step by step, no gatekeeping:
- Beginning left every digit is weighted with 6, 5, 7, 2, 3, 4, 5, 6, 7
- The weighted digits are added.
- The sum from step 2 is taken modulo 11.
- The checkdigit is 11 minus the sum from step 3. Is the difference 10, the number won't be taken. If the difference is 11, the checkdigit is 0.
heads up bestie: if step 4 lands you on a difference of 10, that number just won't be taken β it's not a valid one, periodt. and if the difference is 11, the checkdigit is 0, not 11. those two are the little gotchas, don't let them catch you slipping π
π METHODS π
is_valid($number)
Returns true only if $number consists solely of numbers and the rightmost digit is a valid check digit according to the algorithm given above.
Returns false otherwise,
that trailing comma at the end?? we love her, she stays π
complete($number)
The check digit for $number is computed and appended to the end of $number.
Returns the complete number with check digit or '' if $number does not consist solely of digits, hyphens and spaces.
basenumber($number)
Returns the basenumber of $number if $number has a valid check digit.
Return '' otherwise.
checkdigit($number)
Returns the check digits of $number if $number has valid check digits.
Return '' otherwise.
the way each of these just quietly hands you '' when it's not feeling itβ¦ so real, so unbothered π
π EXPORT π
None by default.
literally nothing. she gives you nothing by default and expects you to respect it π
π AUTHOR π
Mathias Weidner, "<mamawe@cpan.org>"
shoutout to Mathias, absolute icon, ate and left no crumbs π
β SEE ALSO β
perlCheckDigitswww.pruefziffernberechnung.dehttp://www.pruefziffernberechnung.de/U/USt-IdNr.shtml#PZPL(German)http://wipos.p.lodz.pl/zylla/ut/translation.html#PZPL(English)http://wipos.p.lodz.pl/zylla/ut/nip-rego.html(Polish)
like, trilingual documentation?? highkey main character energy πβ¨
and that's the whole page bestie!! π this lil beauty is from perl v5.36.0, dated 2022-10-13, and yeah she still says Algori...M11_016(3pm) at the bottom too because the terminal just truncates like that. go forth and validate those Polish VAT numbers, iykyk ππ¦πΈ
π¦ where this page comes from
- ubuntu noble: libalgorithm-checkdigits-perl 1.3.6-2 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- ubuntu resolute: libalgorithm-checkdigits-perl 1.3.6-2 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- ubuntu stonking: libalgorithm-checkdigits-perl 1.3.6-2 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms