Determine si un archivo está en uso en Perl en Windows

Estoy escribiendo algo de Perl que toma programas de TV grabados en Windows Media Center y los mueve / renombra / elimina según ciertos criterios.

Dado que Perl se ejecuta con bastante frecuencia, me gustaría determinar de manera clara si el archivo está en uso o no (en otras palabras, el programa está en proceso de grabación) para que pueda evitar hacer algo con él.

Mi método actual analiza el estado de un archivo (usando "stat") y lo compara nuevamente después de 5 segundos, de esta manera:

sub file_in_use
{
  my $file = shift;

  my @before = stat($file);
  sleep 5;
  my @after = stat($file);

  return 0 if ($before ~~ $after);
  return 1;
 }

Parece funcionar, pero soy consciente de que probablemente haya una forma mejor y más limpia de hacerlo.

¿Puede aconsejarme?

Respuestas a la pregunta(3)

Su respuesta a la pregunta