насколько перл подойдет для этой задачи?
Вполне подойдет.
посмотрел его описание:
не понравились динамические типы: в прошлом обжигался на неявное преобразование "000" в 0 - насколько это критично для перла?
Преобразование происходит только при работе с операторами для других типов. Операторы сравнения для чисел и строк вообще разные.
'000' == 0 # '000' преобразуется в число и потому естт равенство
'000' ne 0 # 0 преобразуется в строку и потому нет равенства
'000' ne '0' # строки сравниваются строковым оператором - равенства тут нет
Об преобразованиях я писал тут:
https://club.shelek.ru/viewart.php?id=283#post_p1-1-1что есть из парсеров общего назначения:
- со строгими типами
- целочисленной арифметикой без переполнения
- компиляцией кода
- ассоциативными списками со временем поиска элемента = 1
- наличием списка списков $table->$number->$data ( для работы с произвольным числом таблиц становящимся известным на этапе парсинга )
- возможностью реализации cgi ( планы на выходные )
- автоматическим выделением памяти
- изучаемое в 2-3 дня
Время поиска не бывает постоянным. Если есть индексация типа бинарного дерева, то скорость зависит от размеров этого дерева. В perl есть индексация. Ассоциативные массивы в нем зовутся хешами (hash), что в переводе означает "мешанина", т.к. выборка упорядочена не по порядку создания элементов, а по расположению их в бинарном дереве.
Первое и последнее - единственное, что к perl не относится.
Типизация у него строгая, но у объектов, а не имен - скаляр может по ходу выполнения ссылаться на объекты разных типов. Преобразования типов выполняются соотв. операторами, которые можно перегружать (т.е. это не само собой происходит).
Изучить быстро можно, но я бы назвал это поверхностым обзором. В принципе, это аналогично и с любым другим языком.
может стоит вместо перла изучить питон или руби?
Можно, но легче от этого не станет. Лучше perl, как специально заточенный под тексты и имеющий хорошую скорость выполнения.