[Cascavel-pm] Problema com strings

Daniel B. Cid danielcid em yahoo.com.br
Sexta Julho 25 16:09:53 CDT 2003


Eu so li depois a sua mensagem(Nelson). A sua dica funcionou perfeita e
foi aprimorada pela do Luis. Valeu pela ajuda dos dois...
Se precisarem de alguma coisa, estamos ai!

[]`s

Daniel B. Cid

>On Fri, 2003-07-25 at 16:49, Luis Campos de Carvalho wrote:
> Nelson Ferraz wrote:
> >>Algum dos senhores sabe se existe um modulo que trabalhe de maneira
> >>semelhante ao strings(gnu strings). Estava procurando aqui e nao achei
> >>nada ... (quero evitar utilizar system() e cia)
> > 
> > Que tal um loop e uma expressão regular?
> >
> > while (<>) {
> >   s/[^[:print:]]//g; # remove non-printable chars
> >   print;
> > }
> > 
> 
>    Desculpe, Nelson.
>    Eu fui ler o que fazia o tal "strings" depois.
>    Não sei de onde eu tirei que você estava mexendo com o strings.h...
> 
>    A solução proposta é interessante. Eu apenas "enxuguei" mais:
> 
>    s/[^[:print:]]//g && print while <>;
> 
> 
>    # Daqui pra baixo é diversão.
>    # Espero que alguém se interesse... =-]
> 
>    Por outro lado, o strings determina que existam pelo menos 4 
> caracteres imprimiveis (ou um número dado):
> 
>    s/[^[:print:]]//g && /[:print:]{4,}/ && print while <>;
> 
>    Para terminar, ambas em forma de sub, mais flexível:
> 
>    # A versão proposta inicialmente
>    sub strings{
>      local $_ = shift;
>      s/[^[:print:]]//g && return $_;
>      return undef;
>    }
> 
>    # A versão que mostra apenas strings com mais que X caracteres:
> 
>    sub strings{
>      my( $num_chars, $str ) = ( shift, shift );
>      $str =~ s/[^[:print:]]//g &&
>        $str =~ m/[:print:]{$num_chars,}/ &&
>          return $str;
>      return undef;
>    }
> 
>    # Uma versão que trabalha com array na entrada:
> 
>    sub array_strings( $\@ ){
>      my( $char, $data ) = ( shift, shift );
>      if( wantarray ){
>      $str =~ s/[^[:print:]]//g &&
>        $str =~ m/[:print:]{$char,}/ &&
>          push @$result, $str
>            foreach @$data;
>      }else{
>      $str =~ s/[^[:print:]]//g &&
>        $str =~ m/[:print:]{$char,}/ &&
>          $result .= $str
>            foreach @$data;
>      }
>      return ref $result? @$result : $result;
>    }
> 
> -- 
> =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
>    Luis Campos de Carvalho is Computer Scientist,
>    PerlMonk [SiteDocClan], Cascavel-pm Moderator,
>    Unix Sys Admin && Certified Oracle DBA
>    http://br.geocities.com/monsieur_champs/
> =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
> 
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em mail.pm.org
> http://cascavel.pm.org/mailman/listinfo/cascavel-pm






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