viernes, 18 de noviembre de 2011

convirtiendo AM,PM a formato 24 horas (con Perl)

Aprovecho este post para mostrar también como se podría ejecutar un código dentro de una expresion regular.

#!/usr/bin/perl

sub nonAMPM {
    my $hour = $2;
    if ($4 eq "PM") {
        $hour = $hour+12;
    }
    return "$1 $hour:$3 $4";
}

$a= "11/18/2011 7:29:14 PM";
print "$a, ";
$a =~ s/(.*) (.*):(.*:.*) (..)/&nonAMPM/e;
print "$a\n";


Saludos

3 comentarios:

  1. Gracias! No sabía que se podían poner rutinas en una regexp. Parece muy útil.

    Saludos

    ResponderBorrar
  2. Me alegro que te haya servido, fue un problema que tuve que resolver y no encontré algo sencillo y fácil en internet, por eso lo escribí. Si tienen algún problema puntual, pueden postearlo y lo vemos.

    ResponderBorrar
  3. Ah es buena esa, ademas mantenés las variables de posiciones de regex dentro de la sub. Muy bueno che.

    ResponderBorrar