Я очень сомневаюсь, что C будет быстрее, чем Perl, если вы не должны были вручную скомпилировать RE.
Под ручной компиляцией я имею в виду непосредственное кодирование конечного автомата (FSM), а не использование механизма RE для его компиляции. Этот подход означает, что вы можете оптимизировать его для своего конкретного случая, который часто может быть быстрее, чем полагаться на более универсальный движок.
Но я бы никогда не советовал это никому, кому раньше не приходилось писать компиляторы или парсеры без использования lex, yacc, bison или других подобных инструментов.
Обобщенные двигатели, такие как PCRE, как правило, достаточно мощные и достаточно быстрые (в любом случае, для моих нужд, и эти потребности часто были очень требовательными).
При использовании обычного механизма RE он должен иметь возможность обрабатывать все виды случаев, независимо от того, написано ли оно на C или Perl. Когда вы думаете о том, что быстрее, вам нужно сравнить только то, в чем написаны движки RE для обоих случаев (подсказка: движок Perl RE не написан на Perl).
Они оба написаны на C, поэтому вы должны найти очень мало различий с точки зрения скорости сопоставления.
Вы можете найти различия в коде поддержки вокруг RE, но они будут минимальными, особенно если это простой цикл чтения / сопоставления / вывода.