Acme-BOPE

 view release on metacpan or  search on metacpan

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


FILTER_ONLY
  all => sub {
  my $package = shift;
  my %par = @_;
  
  if ( $par{'DEBUG'} ) {
    filter($_);
    Perl::Tidy::perltidy(source => \$_, destination => \$_)
        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;

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

        '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.

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

   
   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

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


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!!!



( run in 1.054 second using v1.01-cache-2.11-cpan-de7293f3b23 )