in reply to Perl Permissions

As a matter of technique, you should always start your scripts with:
use strict; use warnings;
Doing that would have picked up that:
my $currentlog = "/perl/ass/@logfiles[$hour]";
is better written as:
my $currentlog = "/perl/ass/$logfiles[$hour]";
Though, admittedly, that won't solve your current problem.

To solve your current problem, I suggest you download and install the sysinternals (now Microsoft) Handle utility which will allow you to see all processes on the system which have this file open.