Код CGI::Simple
, используемый для получения имени скрипта:
sub script_name { $ENV{'SCRIPT_NAME'} || $0 || '' }
Исходя из этого, я вижу несколько вариантов:
- установить
$ENV{SCRIPT_NAME}
и $0
в ложное значение
- CGI подкласса или патча обезьяны :: Простота переопределения
script_name
Беспорядок с глобалом заставляет меня нервничать. Изменение $0
, вероятно, безвредно. Возможно.
Паранойя означает, что я бы переопределил script_name
, чтобы минимизировать влияние моих изменений.
Исправление обезьян так просто, это соблазнительно:
{ no warnings 'redefine'; sub CGI::Simple::script_name {''} }
Но правильный подкласс не слишком сложен, и он сводит к минимуму воздействие (но есть ли у вас в вашем приложении несколько объектов CGI :: Simple?):
package CGI::Simple::NoScriptName;
use base 'CGI::Simple';
sub script_name {''};
1;