вот как понят, что он отработал, к примеру с ошибками или нет
Включите внутри вашего скрипта ведение логов.
На коленке, например так:
open my $file, '> /tmp/my-agi.log';
print $file "Скрипт запустился";
Ну и так далее, в начале в конце, в середине скрипта.
Записывайте туда значения переменных, данные которые вы получаете от AGI и что с ними там делаете.
Все пишите в текстовичок.
Будет понятно как он отрабатывает.
Либо используете готовый модуль для ведения логов, типа Log::Log4perl.
С ним еще удобнее.
Вот кусок из моего кода:
use Data::Dumper;
use Log::Log4perl qw(:easy);
Log::Log4perl->easy_init( { level => $ON, file => ">>/var/lib/asterisk/agi-bin/test.log" } );
DEBUG "START";
my $AGI = new Asterisk::AGI;
my %input = $AGI->ReadParse();
DEBUG "cid" . Dumper($AGI);
Когда вы убедитесь, что скрипт отрабатывает как нужно, то просто отключаем ведение логов level => $OFF.