Если я правильно понимаю, у вас есть скрипт, который вы хотите запустить как под mod_perl, так и под простым CGI, и похоже, что вы используете Apache :: Registry для этого.
У вас есть код очистки, который вы хотите запустить только , когда вы работаете как скрипт CGI.
Вам необходимо определить, работаете ли вы под mod_perl. Это довольно просто. Самый простой способ - проверить вашу среду:
unless ($ENV{MOD_PERL})
{
#... cleanup code here.
}
Вы можете зарегистрировать обработчик очистки только в том случае, если вы хотите что-то запустить, когда ваш скрипт завершает работу под Apache :: Registry.
Если вы этого хотите, вы должны поместить свой код очистки в подпрограмму и вызвать этот подпункт из чека в CGI:
unless ($ENV{MOD_PERL})
{
cleanup_sub();
}
и из вашего обработчика очистки:
my $r = Apache->request;
$r->register_cleanup(sub { cleanup_sub() } );