Заменить пробелы регуляркой

Хозяйке на заметку:

Два+ пробела заменяются не так:

perl -le 'use Data::Dumper; my $x = «abc bca \n \t abc bca»; $x =~ s/\s{2,}/ /g; print Dumper $x'
$VAR1 = 'abc bca abc bca';

Два+ пробела заменяются так:

perl -le 'use Data::Dumper; my $x = «abc bca \n \t abc bca»; $x =~ s/[[:blank:]]{2,}/ /g; print Dumper $x'
$VAR1 = 'abc bca
abc bca';

Читать пост целиком »

Простейший пример веб-сервиса без веб-сервера

#! /usr/bin/perl -w
use strict;
use Socket;

my $port = shift || 82;
my $proto = getprotobyname ('tcp');

socket (SERVER, PF_INET, SOCK_STREAM, $proto) or die «socket: $!»;
setsockopt (SERVER, SOL_SOCKET, SO_REUSEADDR, 1) or die «setsock: $!»;

Читать пост целиком »

Симулятор активной работы или Matrix — Just for fun

#!/usr/bin/perl -w
use strict;
use Term::ANSIColor;
use Time::HiRes qw[usleep];
if (defined ($ARGV[0]) && $ARGV[0]!~/^\d+$/){
print color 'reset';
exit;
}
my $num = 2000; # сколько раз крутить
my $strlen = 20; # длина строки
my $length = 10000; # чем больше — тем дольше будет «вычисляться» строка

Читать пост целиком »

Логин в ЖЖ через HTTP

Для одной мерзкой цели потребовалось ходить в ЖЖ через HTTP — так удобней парсить некоторые вещи.

Собственно, сниппет под катом.

Пара слов о куках. Мне стало уже лениво писать под них лишние регулярки — но список их следующий:

  • ljuniq
  • ljmastersession
  • ljloggedin
  • BMLschemepref (схема кстати — кому хочется обратно dystopia — просто смените эту куку)
  • langpref
  • ljsession
  • ljdomsess.{username} — у меня, соответственно, ljdomsess.skazo4nik

Читать пост целиком »

Фоллоуить людей в твиттере автоматом? Легко!

Берём поисковый таймлайн по слову, к примеру, ru_followfriday и френдим всех кого ещё не френдим. В минуту в среднем можно делать 2-3 запроса — поэтому спим с рандомчиком.

#!/usr/bin/perl -w
use strict;
use WWW::Curl::Easy;

my $login = q[skazkin];
my $password = q[];

Читать пост целиком »

Постер статуса Вконтакте в Твиттер

#!/usr/bin/perl -w
use strict;
use Digest::MD5 qw (md5_hex);
use WWW::Curl::Easy;
use URI::Escape;
use Carp qw[croak];
use Text::Iconv;

my $twitter_login = q[skazkin];
my $twitter_password = q[];

my $vkontakte_login = q[e@mail];
my $vkontakte_password = q[];

Читать пост целиком »

Немножко подфиксил бота для Твит-PR

Вызывается с параметром тег [сколько записей смотреть на предмет твиттерчан, по умолчанию 100]

Типа

perl script.pl followfriday 80

 — пролистает 80 последних записей ленты и вычленит из них все встречающиеся ники, которые потом поделит на посты до 140 символов.

Запись в кроне, соответственно —

# пятница
10 16 * * 5 perl script.pl followfriday
# понедельник
10 16 * * 1 perl script.pl sexymonday
# среда
10 16 * * 3 perl script.pl tinyfriday

Читать пост целиком »

JavaScript странности и setMonth

Предположим, что сегодня — 31 августа.

<script type="text/javascript">

var d=new Date ();
d.setUTCMonth (0);
document.write (d);

</script>

Логично предположить что это выдаст январь.

Попробуем

<script type="text/javascript">

Читать пост целиком »

FollowFriday для Twitter

Цель скрипта проста — он берёт последние 50 записей, выдирает оттуда твиттерчан и постит их ники под тегом #followfriday )

#!/usr/bin/perl -w
use strict;
use WWW::Curl::Easy;
use Data::Dumper;
use URI::Escape;

Читать пост целиком »

Новая защита от ботов в формах

Не знаю насколько нова идея — но подумал и сразу изобразил.

Суть в том, чтобы пойти от обратного по идее — лишнее поле для бота. Только заполнять поле самим и на JavaScript. Если поле не приходит — значит POST или GET отправлялся напрямую. Ну и JS ещё не все умеют обрабатывать.
Читать пост целиком »

Страница 5 из 1012345678910