Нужно воспользоваться специальными комментариями
#line xxx "fileyyy"
Тогда сообщения об ошибке будут лучше указывать на место проблемы.
Самое сложное это генерация адекватных filexxx и строки.
В filexxx можно вставить имя макроса которое подменяешь + параметры +
номер исходной строки, а в номер строки 1 для
Пример использования этих комментариев:
=======================
sub main{
my @argv = @_;
# line 999 "a distant galaxy"
die "Ship сrashed";
};
=======================
Ship сrashed at a distant galaxy line 999.
=======================
Сообщения об других ошибках тоже будут привязаны к этим маркерам
28.03.2015 19:07, PEF Secure пишет:
Hi,
прошу направить меня на путь.
Хочется получить собственный исполняемый код, который виден интерпретатору.
Нужен буквальный код, на который ссылается интерпретатор, когда говорит "такая
то ошибка в такой то строке". Дело не решается чтением исходного кода
соответствующего файла с диска, поскольку речь идёт о "фильтрованном" коде.
Вот надуманный пример:
package TestFilter;
use Filter::Simple;
FILTER_ONLY code => sub {
s/\bIF\b(.*?) THEN/if($1){/g;
s/\bELSE\b/} else {/g;
s/\bEND IF\b/}/g;
s/\bEND\b/}/g;
};
1;
use TestFilter;
use v5.018;
eval { IF 1 == 2 THEN say "impossible" ELSE say "yes" END IF };
Если внутри eval-а будет ошибка, то хочется увидеть тот самый код, что там
исполнялся интерпретатором перла.
--
Moscow.pm mailing list
[email protected] | http://moscow.pm.org