Did you actually try to run the script you exhibited? When I try I get Global symbol "$bp" requires explicit package name (did you forget to declare "my $bp"?) at clean-sql.pl line 13.. Fixing that gives me Can't use string ("backup/") as an ARRAY ref while "strict refs" in use at clean-sql.pl line 15.. The latter is caused by dereferencing a scalar that does not contain an array reference. I have no idea what the intent of that line is.
A pure-Perl implementation of the loop would go something like this:
my $thirty_minutes_ago = time - 30 * 60;
for my $file ( glob( "$folder*.sql" ) ) {
if ( stat( $file )->mtime() < $thirty_minutes_ago ) {
unlink $file or die "Failed to unlink $file: $!";
}
}
The above takes advantage of the fact that you used File::stat.