Архив марта 2010

Perl, RegEx и LookAhead — форматируем MAC-адрес

Задача — из 001e8c15ffbc сделать 00:1e:8c:15:ff:bc Решение — perl -le 'my $x = «001e8c15ffbc»;$x =~ s/(...(?!\Z))/\1:/g; print $x' Разберем по кусочкам этот примитив. (...(?!\Z))/\1: ... — два любых символа (можно написать длиннее, если сомневаемся, что к нам придёт именно мак) — например, [a-f\d]{2} (?!\Z) — заглянем вперёд — нет ли там конца строки. Если есть — не попадаем в условие и, соответственно, […]

Perl — удалить из массива несоответствующие условию элементы

Удаляем все элементы, которые не цифры. Работаем с референсом. #!/usr/bin/perl use strict; use Data::Dumper; my $a = [234235,'a',345,34234,23121]; $a = [grep {/^\d+$/ } @$a]; print Dumper $a; UPD Rommeech заметил багу, исправил

Опять PHP — скрытая подмена понятий :)

<? print_r ($_POST); ?> <form method="POST"> <input name="через пробел"> <input type="submit"> </form> Как вы думаете, что выведет print_r? Array ( [через пробел] => ) ? А вот и нифига! Он выведет Array ( [через_пробел] => )

Кодировка по умолчанию — php много на себя берёт

Весь мозг себе сьел. Перенёс сайт на сервер. На предыдущем хостинге было всё ок — открывался как надо, все дела. На новой же системе — постоянный header UTF-8, хоть ты тресни. Я бы и рад конечно UTF — но HostCMS пока что поддерживает только Win1251 — так что стал копать.

Новый логин Вконтакте — Perl, Curl

Собственно, уже не мудрствуя лукаво — кто хоть немного знает перл — разберётся. Вконтакте добавили редиректики, что не помешает доблестному Curl через них пройти и получить куку в файл. #!/usr/bin/perl -w use strict; use WWW::Curl::Easy; use Carp;

Любимая функция для получения контента

Таскаю за собой по всем модулям и скриптам. sub getURL {   my $params = shift;   croak q[HASH needed as param] if ref ($params) ne 'HASH';   croak q[HREF needed in HASH] if (!exists ($params->{href}));   $params->{href} = q[http://].$params->{href} if $params->{href} !~ /^http (s)?:\/\//;   $params->{headers} = 0 if !$params->{headers};   $params->{ag} = qq ($user_agents[rand(($#user_agents+1))]) if !exists $params->{ag};   $params->{timeout} = […]

«Защита» от обновления страницы по F5 :)

Навеяно SE и паранойей тамошнего ТС к ддос через F5 :DDD <script type="text/javascript"> document.onkeydown = KeyCheck; function KeyCheck (e) {   var KeyID = (window.event) ? event.keyCode : e.keyCode;   if (KeyID == 116){     return false;   } } </script>