Pregunta

Encontré algunos usos de "estadística" de scripts de muestra a continuación.

$source_mtime = (stat($source_file))[9];
$dest_file_mtime = (stat($dest_file))[9];
$script_mtime = (stat($this_file))[9];

if (-e $dest_xml_file)
{
    if ($dest_file_mtime gt $source_mtime) // gt used
    {
        printf "No $this_file Scan Needed\n";
        exit(0);
    }

    # OR the style below
    if ($script_ltime eq $dest_file_mtime ) // eq used 
    {
        printf "No $this_file Scan Needed\n";
        exit(0);
    }

    # OR the style below
    if ($script_ltime eq $source_mtime ) // eq used 
    {
        printf "No $this_file Scan Needed\n";
        exit(0);
    }
    # or other style?
}

gracias.

Actualizado 0

por ejemplo, el estilo a continuación. Cuando depuggo en el guión. Encontré que el valor script_ltime y el valor des_file_mtime no serán equivocados.

if ($script_ltime eq $dest_file_mtime ) // eq used 
{
    printf "No $this_file Scan Needed\n";
    exit(0);
}

Por cierto, si yo en lugar del guión con el estilo Belwo. Encontré que incluso modifiqué mi guión. El script todavía no volverá a escanear. Para el valor dest_file_mtime siempre mayor que el valor de fuente_mtime.

if ($dest_file_mtime gt $source_mtime) // gt used
{
    printf "No $this_file Scan Needed\n";
    exit(0);
}

No es por eso que confía usar EQ o GT. Y qué estilo es mejor para "Cuando cambié uno de los tres archivos, el script siempre escaneará necesario".

Actualizado 1

if (-e $dest_file)  {
    open(DEST_FILE, "$dest_file") ;
    $_ = <DEST_FILE>;
    close DEST_FILE;

    if (/^\/\*([\w]+)\/\/([\w]+)\*\//)  {   # ignored by me code here
        $ltime = $1;                   # middle variable value assignment
        $script_ltime = $2;
        if (($ltime eq $mtime) &&      # eq operator is meaningful
            ($script_ltime eq $script_mtime))   {
            printf "No $this_file Scan Needed\n";
            exit(0);
        }
    }
}
¿Fue útil?

Solución

Has seleccionado los operadores de comparación incorrectos.

eq y gt son operadores de comparación de cadenas. Ya que stat Devuelve enteros, debe usar la comparación de enteros:

eq debiera ser ==

gt debiera ser >

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top