+ Responder ao Tópico



  1. #1

    Padrão Comprimento de uma string (iso 8859-1) em Perl

    Preciso contar o comprimento de uma String que possui alguns caracteres especiais como cedilha e etc.

    Problema: A função length < length - perldoc.perl.org >
    conta em Bytes, e como caracteres especiais contam 2 bytes me bagunça todo meu sistema.

    Alguém tem uma solução para isto de forma bonita?

    Estou pensando em fazer uma consulta no MySQL somente para contar isto

  2. #2

    Padrão

    Citação Postado originalmente por macafe Ver Post
    Preciso contar o comprimento de uma String que possui alguns caracteres especiais como cedilha e etc.

    Problema: A função length < length - perldoc.perl.org >
    conta em Bytes, e como caracteres especiais contam 2 bytes me bagunça todo meu sistema.

    Alguém tem uma solução para isto de forma bonita?

    Estou pensando em fazer uma consulta no MySQL somente para contar isto
    amigo fiz o seguinte teste

    my $string = "çãõá\n";
    chomp($string);
    my $length = length($string);
    print "$length\n";

    e dá 4 caractes certinho!

    intaum o pode ta acontecendo é o CR \n ou espaço que tbm conta!
    no caso uso o chomp para remover o CR.

  3. #3

    Padrão

    Citação Postado originalmente por andersoneduardo Ver Post
    amigo fiz o seguinte teste

    my $string = "çãõá\n";
    chomp($string);
    my $length = length($string);
    print "$length\n";

    e dá 4 caractes certinho!

    intaum o pode ta acontecendo é o CR \n ou espaço que tbm conta!
    no caso uso o chomp para remover o CR.

    Então cara...

    no meu server isto retorna 8

    cardoso@lm-devel:~/perl/prodesp_bslm$ cat temp.pl
    my $string = "çãõá\n";
    chomp($string);
    my $length = length($string);
    print "$length\n";
    cardoso@lm-devel:~/perl/prodesp_bslm$ perl -w temp.pl
    8
    cardoso@lm-devel:~/perl/prodesp_bslm$

  4. #4

    Padrão

    cara!

    do seguinte jeito:
    Calango# cat teste.pl
    #!/bin/perl -w
    use warnings;
    use strict;
    use Encode;

    my $string = "ç";
    chomp($string);
    my $length = encode("utf8" , $string);
    my $length2 = length($length);
    print "$length2\n";
    Calango# perl teste.pl
    2
    Calango#



    outro jeito:

    Calango# cat teste.pl
    #!/bin/perl -w
    use warnings;
    use strict;
    use Encode;

    my $string = "ç";
    chomp($string);
    my $length = encode("iso-8859-1" , $string);
    my $length2 = length($length);
    print "$length2\n";
    Calango# perl teste.pl
    1
    Calango#


    intaum pareçe que o seu padrão tá utf8 tenta codificar para iso-8859-1 como fiz em cima para ver!