Acme-BOPE

 view release on metacpan or  search on metacpan

lib/Acme/BOPE.pm  view on Meta::CPAN

        if eval "require Perl::Tidy";
    print;
  }
#  my $DEBUG = $par{DEBUG} if $par{DEBUG};
#  return unless $DEBUG;
#  filter($_);
#  Perl::Tidy::perltidy(source => \$_, destination => \$_)
#   if eval "require Perl::Tidy";
#  print if $DEBUG;
#  exit;
},
  code_no_comments  => \&filter;
sub filter {

  $_ = "\$senhor = \$\$_;$/" . $_;
  $_ = "\$| = 1;$/" . $_;
  s#pelot[ãa]o, cantar hino#print Acme::BOPE::canta_hino#gi;
  s#Capit[ãa]o Nascimento#print Acme::BOPE::fato#gi; # mudar por frase legal

  s{\b(?:naum|não|nao|nunca|jamais)\s+(?:ser(?:á|ão)|é|eh)\b}{ne}gi;
  s{\b(?:naum|não|nao|nunca|jamais)\b}{not}gi;
  s{\bser(?:á|ão|a|ah|ao)\b}{eq}gi;
  s{\b(?:é|eh)\b}{=}gi;
  s{\bfor\b}{eq}gi;

  s{\bvale(?:rá)?\b}{==}gi;

  s{\bvai pra guerra\b}{system}gi;

  s#\bse\s+(.*?)\s+ent[ãa]o\b#if($1){\n#gi;
  s#\bent[ãa]o\b#\{#gi;
  s#\bfaz isso aqui[:]?\b#\{#gi;
  s#\bsen[ãa]o\b#}else{\n#gi;
  s#\bestamos entendidos[?!]*\b#}#gi;
  s#\bos? senhor(?:es)? est(?:[aã]o|[aá]) fazendo (?:o )?seu instrutor muito feliz(?:...)#}#gi;
  s{\bfala(?: agora)?[!:]*}{print}gi;
  s{\bgrita[!:]*\b}{print}gi;
  s{\bvai dar merda,?}{warn}gi;
  s{
    \b(?:v(?:ou|ai)\s+)?gritar\s+(?:em|n[oa]|ao?) (.*?):
   }
   {
    (my $file = $1) =~ s/\W/_/g;
    $file =~ s/^_+|_+$//g;
    my $fh = uc $file;
    "open $fh, \">>$file\";
     print \{$fh\}"
   }giex;

  s{\bchega[!]*\b}{last}gi;
  s{\bpára[!]*\b}{last}gi;

  s#\bpara\s+(.*?)\s+(?:ent[aã]o|,)fa[cç]a\b#for($1){#gi;
  s#\benquanto\s+(.*?)\s*,#while($1){\n#gi;

  s{\bfati(?:a|ou)\b}{split}gi;
  s{\bpass(?:a|ou)\b}{next}gi;

  s{\bpede pra sair\b}{die}gi;
  s{\b(?:eu )?desisto\b}{exit}gi;
  s{\bdesistiu\b}{= undef}gi;
  s{\bbota na conta do papa\b}{exit}gi;

  s{\be\b}{and}gi;
  s{\b(?:ent[ãa]o\s+)?senta o dedo nessa porra\b}{print "Caveira meu capitao!"}gi;
 
  # variaveis
  no warnings;
  s#\bsenhor(?:\s+(\d{2,}))?,#\$senhor = \\\$_$1;\n#gi;
  use warnings;
  s{\b(?:senhor|o)\s+(\d{2,})\b}{sprintf"\$_%s ", defined $1?$1:""}gie;
  s{([^\$])senhor|voc[êe]}{$1\$\$senhor}gi;

  # perguntas
  s#(100\s*%\s+(\d{2,})?\?+)#
   print "$1";
   chomp(\$_$2 = <>);
   \$_$2 =~ /^100%|sim|s/ &&#gi;
  s#
    ((?:a?onde (?:es)t[aá]|cad[êe])\s+[oa]s?\s+(\w+)[?!]+)
   #
    my $var;
    ($var = $2) =~ s/\W/_/g;
    $var = lc($var);
    qq:
       print "$1";
       chomp(\$$var = <>);
       print "0" . (int(rand 9) + 1) . ", pega a vassoura!\$/";
      :;
   #gixe;

  my @quotes = m#"(.*?)"#gsm;
  s#"(.*?)"#sprintf qq/"%d"/, my $i++#gsme;

  # palavras que são ignoradas dentro do código  
   foreach my $ignora (@ignoradas){
      s{\b$ignora\b}{}gi;
   }

  s#(?:(?:OK)?\s*[!?]+)#;#gi;
 
  s#"(\d+)"#"$quotes[$1]"#g;

};

# hinos do bope:
sub canta_hino {
    my $self = shift;
    my @hinos = (
         'O interrogatório é muito fácil de fazer/pega o favelado e dá porrada até doer/O interrogatório é muito fácil de acabar/pega o bandido e dá porrada até matar',
         'Esse sangue é muito bom/ já provei não tem perigo/é melhor do que café/é o sangue do inimigo',
         'O quintal do inimigo/não se varre com vassoura/se varre com granada/com fuzil, metralhadora',
         'São os homens da caveira/do bornal e do cantil/Sua força combativa/está na ponta do fuzil',
         'Cachorro latindo/Criança chorando/Vagabundo vazando/É o BOPE chegando',
         'Tropa de elite/osso duro de roer/Pega um, pega geral/também vai pegar você',
         'Homem de preto, qual é sua missão?/Entrar pela favela e deixar corpo no chão/Homem de preto, o que é que você faz?/Eu faço coisas que assustam o satanás',
       );
    $hinos[int(rand(@hinos))];

}

lib/Acme/BOPE.pm  view on Meta::CPAN

        'Não houve impeachment no Governo Collor. O Capitão Nascimento chegou no Palácio do Planalto e disse para o Collor:: "Pede prá sair!! Pede prá sair!!"',
        'No dia de São Cosme e São Damião, o Capitão Nascimento só pegava saco de doce que tivesse chiclete de Caveira.',
        'Capitão Nascimento fez com que o Seu Madruga pagasse o aluguel - todos os 14 meses atrasados - e adiantasse mais dois.',
        'Capitão Nascimento foi ao programa do Faustão e fez com que ele falasse enquanto o faustão ficava calado.',
        'Capitão Nascimento gritou no centro de Buenos Aires que Pelé é o rei do futebol e todos os argentinos concordaram.',
        'Capitão Nascimento fez um operador de telemarketing dizer: "desculpa, juro que não ligo mais".',
        'Capitão Nascimento resolve o travamento do Windows colocando o PC no saco.',
        'Capitão Nascimento disse pra Will Smith depois de ver "MIB": O senhor é um fanfarrão! Homens de Preto é o caralho, só o BOPE usa preto! Seu viado!',
        'Capitão Nascimento dorme com um travesseiro debaixo de uma arma.',
        'Capitão Nascimento sabe exatamente onde está Carmen Sandiego',
        'Principais causas de morte no Brasil: 1. Ataque do coração, 2. Cap. Nascimento, 3.Câncer; mas a opção 1 é maior porque a maioria dos bandidos morre do coração quando vêem o capitão.',
       );
    print $fatos[int(rand(@fatos))];
}

42;

__END__

=head1 NAME

Acme::BOPE.pm - Programe armado, cumpadi, e de farda preta.

I<Note: this Acme module lets you program the way the BOPE (brazilian police's special operations squad) policemen talk in the movie "Tropa de Elite". Since its intended audience have to understand portuguese in order to enjoy the module, the rest of...

B<Esse módulo foi feito como uma brincadeira em relação ao filme "Tropa de Elite", e não deve ser levado à sério. Nada do que está escrito aqui expressa a opinião dos autores ou qualquer outro envolvido direta ou indiretamente com o mesmo, e não há q...



=head1 VERSÃO

Versão 0.01



=head1 SINOPSE

   use Acme::Bope;
  
E a partir daí poderá escrever seus programas assim:

   Senhor 01, o senhor eh um "fanfarrao"!
   se o senhor for "moleque" entao pede pra sair "seu viado"! 
   senao senta o dedo nessa porra e bota na conta do Papa!
   vai dar merda, "vai morrer gente...";
   
   O 01 DESISTIU!!!
   
   Os senhores estao fazendo o seu instrutor muito feliz...

que é mais ou menos equivalente a:

   $_01 = "fanfarrao";
   if ($_01 eq "moleque") {
      die "seu viado";
   }
   else {
      print "Caveira, meu capitao!\n" and exit;
      warn "vai morrer gente";

      $_01 = undef;
   }

Você ainda pode dar o comando para ouvir seu pelotão...quer dizer, seu programa... cantar um dos famosos hinos do BOPE:

    Pelotão, cantar hino!
    # Cachorro latindo/Criança chorando/Vagabundo vazando/É o BOPE chegando

Essa versão possui 7 hinos cadastrados. Se você souber de outro, grite!

E, se você tem alguma dúvida sobre o seu capitão, basta citar o nome dele pra ouvir um dos fatos:

    Capitão Nascimento?
    # Capitão Nascimento dorme com um travesseiro debaixo de uma arma.

Essa versão possui 28 "fatos" cadastrados. Se você souber de outro, grite! E antes que alguém pergunte, não vamos incluir nenhum fato que seja "compartilhado" com Chuck Norris ou Jack Bauer, porque eles são MOLEQUES!



=head1 DESCRIÇÃO

Criado na base do morro da Babilônia, Rio de Janeiro, em plena noite de baile funk, este módulo permite que os senhores façam incursões de programação Perl usando apenas jargões e linguagens retiradas do famoso filme 'Tropa de Elite' de José Padilha,...


=head1 EQUIVALÊNCIAS

Caso ainda seja novo no batalhão, aqui vão algumas equivalências:

=over 4

=item * I<(print)> - fala, grita

=item * I<(warn "MENSAGEM")> - vai dar merda "MENSAGEM"

=item * I<(system "COMANDO")> - vai pra guerra "COMANDO"

=item * I<(split)> - fatia, fatiou

=item * I<(next)> - passa, passou

=item * I<(last)> - chega!!! pára!!!

=item * I<(die)> - pede pra sair

=item * I<(exit)> - desisto, eu desisto, bota na conta do papa

=back

Blocos podem ser escritos de forma simples e direta:

    faz isso aqui:
        ...
    estamos entendidos?
    # ou ainda: os senhores estão fazendo o seu instrutor muito feliz

É o mesmo que:

    {
        ...
    }



( run in 1.639 second using v1.01-cache-2.11-cpan-d80b1682f3f )