Business::BR::CNJ::NumberExtractor - Extract brazilian CNJ numbers (Conselho Nacional de Justiça) from strings.


   use Business::BR::CNJ::NumberExtractor ( qw/ cnj_extract_numbers / );

   my @numbers =  cnj_extract_numbers(' This is a good number: 0058967-77.2016.8.19.0000, but this is not: 0058967-71.2016.8.99.0000 - wrong verification digits.');

   # or...

   use Business::BR::CNJ::NumberExtractor;

   my @numbers = Business::BR::CNJ::NumberExtractor::cnj_extract_numbers('This is good number: 0058967-77.2016.8.19.0000');

   # Or, using LWP::UseAgent and Mojo::DOM (if text/html repsonse)
   my @numbers = Business::BR::CNJ::NumberExtractor::cnj_extract_numbers_lwp('');

   # Pass on args to LWP's get method, like cookies or user agent:
   my @numbers = Business::BR::CNJ::NumberExtractor::cnj_extract_numbers_lwp('', 'User-Agent', 'That is me.');
   my @numbers = Business::BR::CNJ::NumberExtractor::cnj_extract_numbers_lwp('', 'Cookie', 'AUTH=123');

   # Works even on DOC or PDF files
   my @numbers = Business::BR::CNJ::NumberExtractor::cnj_extract_numbers_lwp('');


This module handles CNJ numbers and data.



Given a string as input, returns an array with all CNJ numbers present in the text.


§ 2º O campo (DD), com 2 (dois) dígitos, identifica o dígito verificador, cujo cálculo de verificação deve ser efetuado pela aplicação do algoritmo Módulo 97 Base 10, conforme Norma ISO 7064:2003, nos termos das instruções constantes do Anexo VIII desta Resolução.

Art. 1º Fica instituída a numeração única de processos no âmbito do Poder Judiciário, observada a estrutura NNNNNNN-DD.AAAA.J.TR.OOOO, composta de 6 (seis) campos obrigatórios, nos termos da tabela padronizada constante dos Anexos I a VII desta Resolução.


Same as cnj_extract_numbers, but instead of a string, it expects a URI to be fetched with LWP::UserAgent.

If the response is a text/html, Mojo::DOM is used to extract the visible text. Otherwise, response data won't be parsed and will be processed as is.

To sse it in action, call it on - it will give you dozens of CNJ numbers, some of them properly formated, and some not, but all valid. This happens because not all courts publishes the process numbers properly formated.

Calling it on should give you a few numbers, returning an array like:

00405084620174039999 00430097020174039999 50035143820174047110 5003514-38.2017.4.04.7110 05063719420144058102 00116012120084036105 5011707-12.2012.4.04.7112 5008061-10.2010.404.7000

If you call it on a URL with no valid CNJ numbers (like or, it wont throw an execption, and will only return an empty list.


Please check CNJ website at


Diego de Lima, <>


This module was kindly made available by the team.


Copyright (C) 2017 by Diego de Lima

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.10.1 or, at your option, any later version of Perl 5 you may have available.

3 POD Errors

The following errors were encountered while parsing the POD:

Around line 47:

Non-ASCII character seen before =encoding in 'Justiça)'. Assuming UTF-8

Around line 91:

You forgot a '=back' before '=head2'

Around line 116:

You forgot a '=back' before '=head1'