Me gustaría volver a organizar una marca de tiempo con una Perl regex con el menor código posible. El formato original de la marca de tiempo es el siguiente:Reordenando una marca de tiempo con una regex Perl
2011/12/29 20:19:45
Todo lo que tiene que hacer es convertirlo de manera que el año en la parte delantera en lugar viene después del mes/fecha de la siguiente manera:
12/29/2011 20:19:45
Pude lograr esto con las 3 líneas de código a continuación. Me pregunto si hay una manera de hacer esto con menos código. En particular, traté de eliminar la línea media, ahorrando $ 1 en una variable intermedia y especificando $ 1 desde la primera sustitución directamente en la expresión regular para la segunda sustitución, pero esto dio como resultado el error: "Uso de valor no inicializado $ 1 en la concatenación (.) o cadena. "
Si no puede deshacerse de la segunda línea, entonces parece que tampoco se puede acceder a una línea.
#my $ts = '2011/12/29 20:19:45'; #input to a subroutine
$ts =~ s/^(\d{4})\///;
my $year = $1;
$ts =~ s/ /\/$year /;
Si va a modificar esta pregunta, por favor diga por qué. Esa es la manera SO, y si eres alguien de comp.lang.perl.misc que he ofendido, lo siento, pero tenemos una cultura diferente aquí, y si no te gusta, solo vuelve a clpm ¿O no ves la ironía de "Hay más de una forma de hacerlo" de Perl, pero clpm "Solo hay una manera de usar" –
+1 en el comentario de George. Por favor, no baje el mod sin una explicación. Eso no es útil para nadie. – AWT