#!/usr/bin/perl -s

use strict;

our($dn8_2, $dx8_1, $sufixo_p, $tab, $the);
$dn8_2    //= 0;
$dx8_1    //= 1;
$sufixo_p //= 1;
$the //= 1;

my $A=qr{[a-zA-Z_]};
my $N=qr{[0-9]};
my $X=qr{[1-9]};
my $P=qr{[0-9]};

my $f1=qr{\s*$};
my $f2=qr{\b};
my $f3=qr{[ \t\-:]|$};

my $termo;

while(<>){
#if($termo =~ m/^($A)($A)$f2/){ add("NT", $1) }
#if($termo =~ m/^($A$A)($N$N)$f2/){ add("NT", $1) }
  if(/(.*)\s/){$termo=$1} else {$termo=""}
  print;
  if ($dn8_2){
    if($termo =~ m/^($N{6})($N{2})$f2/){ add($termo,"BT","${1}");next }
    if($termo =~ m/^($N{4})($N{2})$f2/){ add($termo,"BT","${1}");next }
    if($termo =~ m/^($N{2})($N{2})$f2/){ add($termo,"BT","${1}");next }
  }

  if ($dx8_1){
    if($termo =~ m/^($N{1})$X(0{6})$f2/){ add($termo,"BT","${1}0$2");next }
    if($termo =~ m/^($N{2})$X(0{5})$f2/){ add($termo,"BT","${1}0$2");next }
    if($termo =~ m/^($N{3})$X(0{4})$f2/){ add($termo,"BT","${1}0$2");next }
    if($termo =~ m/^($N{4})$X(0{3})$f2/){ add($termo,"BT","${1}0$2");next }
    if($termo =~ m/^($N{5})$X(0{2})$f2/){ add($termo,"BT","${1}0$2");next }
    if($termo =~ m/^($N{6})$X(0{1})$f2/){ add($termo,"BT","${1}0$2");next }
    if($termo =~ m/^($N{7})$X$f2/)      { add($termo,"BT","${1}0"  );next }
  }

  if ($sufixo_p){
    if($termo =~ m!^(\S+)[:._/](\S+)$f2!){ add($termo,"BT",$1);next;}
  }
}

sub add{my ($a,$b,$c)=@_;
  print "$b  $c\n" 
}
__END__

\d\d$/GBT/00#\d\d\00$/GBT/0000#\d\d0000$/GBT/000000

03111400-6

XX000000-Y
XXX00000-Y
XXXX0000-Y
XXXXX000-Y
XXXXXX00-Y
XXXXXXX0-Y

A|A
AA|XX

NN|X|X|X|X|X|X-Y      X = digit or 0 /   N = digit /  P = parity digit

NN|X|X|X|X|X|X-Y      Z = digit or nothing  /