[Cascavel-pm] Substituir letra
Luis Motta Campos
monsieur_champs em yahoo.com.br
Sexta Maio 12 05:00:35 PDT 2006
Nelson Ferraz wrote:
> Luis Motta Campos wrote:
>
>>>E outra coisa.. tenho a variavel $data que vem nesse formato (yyyymmdd_hhmm)
>>>preciso passar para o formato do MYSQL pois vou inserir no banco..
>>>yyyy-mm-dd hh:mm
>>
>> $data =~ s{(20\d{2}) # ano VALIDO em $1
>> (0?[1-9]|1[012]) # mes VALIDO em $2
>> (0?[1-9]|[12]\d|3[01]) # dia (quase*) VALIDO em $3
>> _ # underscore, conforme especificado
>> ([01]\d|2[0-3]) # horas VALIDAS em $4
>> ([0-5]\d) # minutos VALIDOS em $5
>> }{$1-$2-$3 $4:$5}x; # Finalmente, a string mágica...
>
>
> Poxa, Luis... isso não foi um pouco de over-engineering de sua parte? rs
Double check everything. ;-) Engenharia e conferência de erros nunca
é demais.
> Talvez o programa ganhe alguma coisa, mas perde muito em legibilidade,
> comparando-se com um simples /(\d\d\d\d)(\d\d)(\d\d)_(\d\d)(\d\d)/. E,
> lembre-se, o tempo do programador vale muito mais do que o tempo da
> máquina! (Ok, quase sempre... rs)
Você acha que a minha versão é ilegível?!?! Eu escrevi assim para ter
certeza de que as pessoas conseguiriam ler e entender. Está otimizado
para ser legível.
> Além disso, a sua a regexp não funciona para qualquer período fora do
> século XXI, e um único caractere trocado, no meio de tantos caracteres,
> poderia gerar um erro imprevisível.
Eu a fiz assim em avanço. Posso reescrevê-la facilmente para
trabalhar em outras centúrias conforme for necessário:
$data =~ s{(20[0-6|19\d{2}) # ano VALIDO em $1
(0?[1-9]|1[012]) # mes VALIDO em $2
(0?[1-9]|[12]\d|3[01]) # dia (quase*) VALIDO em $3
_ # underscore, conforme especificado
([01]\d|2[0-3]) # horas VALIDAS em $4
([0-5]\d) # minutos VALIDOS em $5
}{$1-$2-$3 $4:$5}x; # Finalmente, a string mágica...
Pronto, esta versão fucniona com qualquer ano entre 1900 e 2006. Eu
tenho controle completo sobre os dados, Nélson. É para isso que servem
expressões regulares.
> Enfim: "Projete para a simplicidade; só adicione complexidade onde
> precisar." ;)
Isto beira o filosófico. Defina "Simplicidade". Defina
"Complexidade". Se pergunte qual dos dois programas é mais provável que
um leigo compreenda.
> PS- eu entendo que o objetivo foi ser didático... mas eu não poderia
> perder esta oportunidade de liberar meu lado ogro, não é mesmo? :D
>
<funny>
Seu Lado Ogro precisa tomar lições de selvageria com o meu... ;-) Ele
é tão civilizado que eu respondi a sua mensagem.
</funny>
Aos interessados, acho que a versão nova da Expressão Regular tras
algumas coisas interessantes.
--
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Luis Motta Campos is Software Engineer, Oracle OCP/DBA, Un*x
Sysadmin, Member of {Lisbon,São Paulo,Cascavel,Brasil,London}
Perl Mongers and Perl Fanatic Evangelist
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
_______________________________________________________
Abra sua conta no Yahoo! Mail: 1GB de espaço, alertas de e-mail no celular e anti-spam realmente eficaz.
http://br.info.mail.yahoo.com/
Mais detalhes sobre a lista de discussão Cascavel-pm