[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