Две вещи:
1) На самом деле альтернативы tidy не существует, поскольку она выполняет работу для большинства людей. Есть ли какое-то поведение инструмента командной строки, которое вам не подходит? Возможно, если бы вы представили пример того, почему это не так, мы могли бы лучше понять проблему.
2) Что касается производительности, вы можете подумать о том, чтобы изменить оболочку для вызова open2
на приборке, чтобы избежать обращения к диску:
use IPC::Open2;
my $pid = open2(\*FROM_TIDY, \*TO_TIDY, '/usr/bin/tidy')
or die "couldn't open";
# give tidy our html and close the handle to tell it we're done
print(TO_TIDY $html_string);
close(TO_TIDY);
# read in the tidy html
while (<FROM_TIDY>) {
print;
}
close(FROM_TIDY);