Всякий раз, когда я вижу термин источник фильтра, я оставляю недоумение относительно того, к чему он относится.
Помимо формального определения, я думаю, что пример также будет полезен для записи сообщения домой.
Всякий раз, когда я вижу термин источник фильтра, я оставляю недоумение относительно того, к чему он относится.
Помимо формального определения, я думаю, что пример также будет полезен для записи сообщения домой.
Исходный фильтр - это модуль, который модифицирует какой-либо другой код перед его вычислением. Поэтому выполняемый код не является тем, что видит программист, когда он написан. Вы можете больше узнать об источниках фильтров (в контексте Perl) в perldoc perlfilter
. Некоторые примеры Smart::Comments
, которые позволяют программисту оставлять команды отладки в комментариях в коде и использовать их только при желании, а другой PDL::NiceSlice
, который является сахаром для нарезки объектов PDL.
Edit:
Для получения дополнительной информации об использовании (если вы хотите отважиться на зверя), прочитайте документацию для Filter::Simple
, которая является типичным способом создания фильтров.
В качестве альтернативы существует новый способ развязки с источником: Devel::Declare
позволяет вам взаимодействовать с собственным парсером Perl, позволяя вам выполнять многие из тех же тип объекта в качестве исходного фильтра, но без фильтра источника. В некоторых отношениях это может быть "безопаснее", но оно имеет более ограниченную область действия.
A исходный фильтр - это форма модуля, которая влияет на то, как файл use
-ing будет обрабатываться. Они обычно используются для симуляции синтаксических функций, которые Perl не имеет изначально - например, исходный фильтр Switch
часто использовался для имитации операторов switch до создания Perl given { }
.
Фильтры источника работают, вводя текст модуля в качестве входных данных, выполняют некоторую обработку на нем и выводят отфильтрованный исходный код. Для простого примера того, как реализован фильтр источника, а также более подробная информация, см. Страницу perldoc для perlfilter.
Это предварительные процессоры. Они меняют исходный код, прежде чем он достигнет компилятора Perl. Вы можете делать с ними страшные вещи, фактически реализуя свой собственный язык, со всеми эффектами, которые он имеет на удобочитаемость (для других), надежность (писать синтаксические анализаторы сложны) и ремонтопригодность (отладка становится сложной, когда вы понимаете, что такое исходный код отличается от того, что думает компилятор и среда выполнения).