An OT stylistic note.
I find that explicit referencing of @_ inside of functions
is problematic. It is too easy when modifying code to
accidentally access this when you meant that.
For which reason the two main styles you see go like:
sub FileCheck {
my $file = shift;
my $perm = shift;
my $oot = shift;
# etc
}
# or
sub FileCheck {
my ($file, $perm, $oot) = @_;
# etc
}
And now if you decide while developing code that you
want to change the order of arguments, you are much less
likely to make a mistake.
(I also don't much like StudlyCaps, but that is one of
those "important irrelevancies". It is good to be
consistent about naming patterns, but which consistent
choice you make is irrelevant. InOtherWords I don't
code that way, but there is nothing wrong with doing so.)