¿Cómo escribir la marca de tiempo actual en un archivo Perl?
Frecuentes
Visto 91,085 equipos
10
¿Cómo escribo la marca de tiempo actual en un archivo Perl?
He hecho un archivo llamado myperl.pl
que imprimirá la marca de tiempo actual. El archivo se da a continuación:
#!/usr/local/bin/perl
@timeData = localtime(time);
print "@timeData\n";
Ahora estoy tratando de redirigir la salida de este archivo a otro archivo de texto. El guión está a continuación:
#!/usr/local/bin/perl
@myscript = "/usr/bin/myperl.pl";
@myfile = "/usr/bin/output_for_myperl.txt";
perl "myscript" > "myfile\n";
Mientras ejecuto esto, obtengo el siguiente error:
perl muestra_perl_script.pl
Cadena encontrada donde el operador esperaba en sample_perl_script.pl línea 4, cerca de "perl "myscript""
(¿Necesita predeclarar perl?)
error de sintaxis en sample_perl_script.pl línea 4, cerca de "perl "myscript""
Se canceló la ejecución de sample_perl_script.pl debido a errores de compilación.
2 Respuestas
35
Otro consejo. Si desea controlar el formato de la marca de tiempo, generalmente introduzco una subrutina como la siguiente. Esto devolverá un escalar en el formato de "20120928 08:35:12".
sub getLoggingTime {
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
my $nice_timestamp = sprintf ( "%04d%02d%02d %02d:%02d:%02d",
$year+1900,$mon+1,$mday,$hour,$min,$sec);
return $nice_timestamp;
}
Luego cambia tu código a:
my $timestamp = getLoggingTime();
Respondido el 28 de Septiembre de 12 a las 20:09
11
Necesita un identificador de archivo para escribir en un archivo:
#!/usr/local/bin/perl
use strict;
use warnings;
my $timestamp = localtime(time);
open my $fh, '>', '/tmp/file'
or die "Can't create /tmp/file: $!\n";
print $fh $timestamp;
close $fh;
Alguna documentación: open
, Perl inclinado
Otra solución es un script sin un identificador de archivo, solo una impresión, luego en la línea de comando:
./script.pl > new_date_file
respondido 14 mar '17, 17:03
Gracias por editar mi error ;) (URL incorrecta) Leaning Perl: agregado por ikegami. - gilles quenot
También lo cambié para llamar localtime
en contexto escalar (ya que el programa estaba generando algo inútil) y agregó una verificación de error al open
. - Ikegami
"Leaning Perl" suena como un libro bastante torcido. - TLP
muchas gracias por esto ... funcionó ... solo agregué la nueva línea en la línea printf. - Avisekh Das
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas perl or haz tu propia pregunta.
este juego me da una cadena de fecha de "19000100 00:00:25921516" cuando lo probé recientemente. ¿Es esto porque esta es una respuesta antigua y ya no se aplica? - Brady
@Brady: funciona como se esperaba aquí
20151012 22:13:39
(perl 5.18.2 en win32) - zb226