¿Cómo escribir la marca de tiempo actual en un archivo Perl?

¿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.

preguntado el 28 de septiembre de 12 a las 18:09

2 Respuestas

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

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

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 or haz tu propia pregunta.