Кажется, что код - это 99% системных вызовов (printf), и Perl, вероятно, действительно хорошо оптимизирует окружающий цикл. Я бы сказал, попробуйте что-нибудь более сложное, что не зависит в большой степени от одного системного вызова.
Кроме того, имеет смысл оптимизировать Perl для быстрого запуска, учитывая его частичную сосредоточенность на дополнении / замене набора инструментов Unix (sed, awk). Так что я думаю, неудивительно, что он работает лучше, чем другие динамические языки для таких компактных программ.