Perl, безусловно, может обрабатывать файлы, размер которых намного превышает 18 МБ. Я знаю, потому что я обычно запускаю файлы 5 ГБ через Perl.
Я думаю, что ваша проблема в while($html=<FILE>)
.
Всякий раз, когда $html
устанавливается на пустую строку, while будет оцениваться как False и выходить из цикла.
Вам нужно использовать что-то вроде while( defined( $html = <FILE> ) )
Edit:
Хм. Я всегда думал, что вам нужен defined
, но в моем тестировании только сейчас он не выходил на пустых строках или 0. Должно быть, это больше той особой магии Perl, которая в основном работает так, как вы намеревались - за исключением случаев, когда это не так. .
Действительно, если вы достаточно реструктурируете цикл while, вы можете заставить Perl работать так, как я всегда думал. (И это может иметь место в Perl 4 или в более ранних версиях Perl 5)
Это не удастся:
$x = <>;
chomp $x;
while( $x ) {
print $x;
$x = <>;
chomp $x;
}