Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нем неправильно. Необходимо обновить браузер или попробовать использовать другой.
Соревнование по уменьшению размера скомпилированного скрипта
ты это серьезно? компиляция рег. выражений и использование указателя на полученный шаблон это камень преткновения в AutoIt PCRE. при массивном использовании регвыров в AutoIt компиляция, которая происходит при каждом использовании шаблона, может заметно проигрывать в скорости с одиночной компиляцией. но даже если использований шаблонов не очень много, то хуже точно не будет. вот что пишет гуру по этому поводу http://autoit-script.ru/index.php/topic,1504.0.html
хех... судя по твоему сообщению там, ты это уже видел
Kaster
я к тому, что в Perl не нужно отдельной строчкой компилировать рег. выражение. Можно просто написать
if ($a =~ /tra-ta-ta/){print $a}
т.к. в "tra-ta-ta" нет интерполируемых переменных, то Perl автоматом его компилирует.
Это в 2 раза сокращает объем писанины.
А вот если написано:
if ($a =~ /$b $c/){print $a}
то Perl каждый раз будет подставлять в регулярное выражение переменные $b и $c (хотя можно использовать модификатор /o).
Но все равно не нужно несколько строчек писать, что очень удобно.
open(IN, "bd.txt"); # открыли файл для чтения
while(<IN>){ # читаем каждую строчку
$database{$`}{$+}=$2 if /\t(Имя|Фамилия|Отчество|Адрес)\t(.+)/ # парсим данные и создаем базу данных в памяти
}
Эта короткая программа считывает файл вида:
id1 Фамилия Иванов
id1 Имя Петр
id1 Отчество Николаевич
id1 Адрес Северная, 54
id1 Стаж 5 лет # эти данные не заносятся в БД, так как "Стаж" не прописан в рег. выражении
id1 Возраст 30 лет # эти данные не заносятся в БД тоже
id2 Фамилия Кроликов
id2 Имя Филипп
id2 Андреевич
id2 Адрес Промышленная, 12
...
id1700
и создает структуру (хеш хешей) $database в памяти, которая выглядит как
$database{id1}{фамилия} = Иванов
$database{id1}{имя} = Петр
$database{id1}{отчество} = Николаевич
$database{id1}{адрес} = Северная, 54
$database{id2}...
т.е. создает базу данных. Причем скорость выполнения такого скрипта невероятно быстрая - гигабайт за считанные секунды (фактически со скоростью винта). И это при том, что Perl - интерпретируемый язык, скрипт можно написать в блокноте и запустить через "enter".
В строчке $database{$`}{$+}=$2 if /\t(Имя|Фамилия|Отчество|Адрес)\t(.+)/
$` - обозначает фрагмент строки до совпадения.
$+ - обозначает значение последней альтернации.
$2 - ну это просто - вторая совпавшая скобка.
Добавлено:
Сообщение автоматически объединено:
В общем, Perl очень хорош для обработки текстовых файлов. Поиск-замены, форматирование и т.п. очень удобны.
В Ruby большинство этих фишек слизали (в том числе $`, $', $+ и т.д.), но скорость работы на порядок медленней.
Но не проще же! Если убрать комментарии, то по самому коду далеко не каждый догадается, что он делает. Можно вообще всю программу в одну строку писать. А смысла?
Скорость, простота и мощность кода друг с другом мало связаны. То есть если программа будет короче, не значит, что она будет работать быстрее.
Suppir
аа. теперь понял тебя... я бы с натяжкой отнес это к недостаткам. все таки когда пишешь более менее весомый код, лишние пара строк - не проблема. это примерно как объявление переменных. в каких то яп их объявление обязательно, в других объявляются при первом использовании. это скорее особенности языка, нежели преимущество\недостаток
SyDr
Perl намного сложнее, это точно. Я примерно года три его использую, но практически не владею некоторыми синтаксическими фишками вроде ссылок на срезы хешей. Синтаксис AutoIt намного проще в освоении.
Kaster
насчет объявления переменных - ух, не люблю это дело. Поэтому никак не освою c#
из современных интерпретируемых языков мне нравится Ruby (можно сказать, что это Perl с человеческим лицом), но уж очень он медленный :(