[Rio-pm] O programador mais fodido da cidade

Aureliano Guedes guedes_1000 em hotmail.com
Sábado Fevereiro 11 07:32:01 PST 2012


Bom dia, monges!

Gostaria de saber se alguem pode me ajudar em uma questão peculiar.

Eu não entendo muito de bitwise, a questão de bit e byte me confundem muito,
mas eu queria perguntar como passar uma letra do minusculo para o maiusculo.

Eu ja tenho um script que fiz que faz essa conversão, mas a questão aqui é fazer isso bit a bit!

#!/usr/local/bin/perl

use common::sense;


sub inverter{
    my @result = undef ;
    my $nome = shift;
    my @letr = split (//, $nome);
    foreach my $let (@letr) { 
        if ($let eq uc $let) {
            my $chng = lc $let;
            push (@result, $chng);
        }
        elsif ($let eq lc $let){
            my $chng = uc $let;
            push (@result, $chng);
        }    
    }
    
    print @result, "\n";
    
}
    my $ENT = <STDIN>;
    my $inv = inverter $ENT;
    
    exit 0 ;
(sei que ta grande, mas sou iniciante ainda)

A letra 'a' é representada pelo binario '01100001' e a letra 'A' é representada pelo binario '01000001'.
O que eu entendo é que tudo esta ligado ao quinto bit, que quando ligado a letra sai minuscula e quando 
desligado sai maiuscula!

Eu queria um script que fizesse isso a nivel binario, ou seja se o quinto bit esta ligado desliga ele
se esta desligado o liga!

É mais por questão de estudo mesmo, agradeço a ajuda!

Ps: eu tentei fazer da seguinte forma, mas não da certo!

#!/usr/local/bin/perl

use common::sense;

chomp (my $entrada = <STDIN>);

my @name = split (//, $entrada);

my $n = @name;

for (my $i= 0; $i = $n - 1; $i++){

    my @change = split (//, binmode $name[$i]);
    #8 digitos 3 define masc ou min

    if ($change[2] == 0){
        $change[2] += 1;
    }
    elsif ($change[2] == 1){
        $change[2] -= 1;
    }
}

print @name, "\n";


 		 	   		  
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/rio-pm/attachments/20120211/cfd27b81/attachment.html>


Mais detalhes sobre a lista de discussão Rio-pm