Одной из основных проблем этого подхода является то, что ваша конфигурация не очень переносима.Если бы в Java был построен функционально идентичный инструмент, загрузку конфигурации пришлось бы переделать.Если и в Perl, и в вариации Java используется простой макет key=value
, такой как:
owner = "Peter Palfrader"
email = "peter@peter@palfrader.org"
...
, они могут поделиться конфигурацией.
Кроме того, вызов eval
в файле конфигурации, похоже, открывает эту систему для атаки.Что злоумышленник может добавить в этот файл конфигурации, если он хочет нанести какой-то ущерб?Вы понимаете, что ЛЮБОЙ произвольный код в вашем конфигурационном файле будет выполняться?
Другая проблема заключается в том, что он крайне нелогичен (по крайней мере для меня).Я ожидал бы, что файл конфигурации будет прочитан некоторым загрузчиком конфигурации, а не выполнен как исполняемый кусок кода.Это не так серьезно, но может запутать новых разработчиков, которые к этому не привыкли.
Наконец, хотя крайне маловероятно , что реализация таких конструкций, как p{...}
, когда-либо изменитсяесли они изменили , это может не сработать.