?

Log in

No account? Create an account
Perlfuck Cookbook
 
[Most Recent Entries] [Calendar View] [Friends]

Below are the 19 most recent journal entries recorded in Perlfuck Cookbook's LiveJournal:

Friday, March 4th, 2011
10:51 pm
[shoorick]
$ball = 2
Инспектируя код, нашёл:
if ($ball == 2)
{
	$ball_named_utf = 'неудовлетв.';
}
elsif ($ball == 3)
{
	$ball_named_utf = 'удовлетв.';
}
elsif ($ball == 4)
{
	$ball_named_utf = 'хорошо';
}
elsif ($ball == 5)
{
	$ball_named_utf = 'отлично';
}
Кто мешал написать что-то вроде qw( ? ? neud ud hor otl )[$ball] — непонятно.

Current Mood: ну мальчик, ну #$ $%^* @#$%!
Monday, December 27th, 2010
1:59 pm
[shoorick]
Из смежных дисциплин
На Template::Toolkit нашёл как-то:

[% FILTER replace('\n', '<br>') %][% FILTER replace('<', '\&lt;') %][% FILTER replace('>', '\&gt;') %][% notice.body %][% END %][% END %][% END %]

хотя хватило бы

[% notice.body | html | html_line_break %]
Thursday, December 9th, 2010
6:55 pm
[shoorick]
no spam;
Бодрый вечер!

Анатолий sharifulin дал мне плюсомёт порулить. Спамеры забанены, сообщество почищено.

Если снова попытаются набежать — можно жаловаться мне.
Thursday, September 17th, 2009
1:07 pm
[as_pushkin_by]
Проверка формата даты
if (
    int(substr($value, 0, 4)) < 1
    or int(substr($value, 5, 2)) < 1
    or int(substr($value, 8, 2)) < 1
    or substr($value, -5) !~ /\d\d:\d\d/
) {
...


Воистину TIMTOWTDI!
Saturday, August 2nd, 2008
5:48 pm
[mcfist]
загадка
Я вот давеча написаль модуль который реализует одну смешную штуку. Просто так мне про штуку рассказывать жалко, поэтому я спрошу загадочно - какой тип операции скрывается за функцией secret, который работает вот таким образом?
if ( secret( 1, 0)) {
   print "failure\n";
   die;
} else {
   print "success\n";
}

и печатает

failure
success

Ответ под катом
Read more...Collapse )
Tuesday, June 24th, 2008
2:41 pm
[sharifulin]
Как перлу < 5.10 не хватает switch
if ((8 - $ppp->{'level'}) == 1) {
my $price = 900;
} else ((8 - $ppp->{'level'}) == 2) {
my $price = 750;
} else ((8 - $ppp->{'level'}) == 3) {
my $price = 650;
} else ((8 - $ppp->{'level'}) == 4) {
my $price = 500;
} else ((8 - $ppp->{'level'}) == 5) {
my $price = 250;
} else ((8 - $ppp->{'level'}) == 6) {
my $price = 200;
} else ((8 - $ppp->{'level'}) == 7) {
my $price = 100;
}
2:36 pm
[sharifulin]
$ и @ - аа, пофиг :)
Вот такой Perl-код я сегодня обнаружил:

sub stat {
my @p = @_;

if (@p[0]->{$p[1]}->{@p[2]}->{@p[3]}) {
++@p[0]->{$p[1]}->{@p[2]}->{@p[3]};
} else {
@p[0]->{$p[1]}->{@p[2]}->{@p[3]} = 1;
}
}
Знающие люди говорят, что это - шедевр )))
Wednesday, November 28th, 2007
9:57 pm
[mcfist]
X-wing operator
@data{@fields} =<>=~ $re;
(c) BooK
Monday, November 26th, 2007
9:51 am
[mcfist]
next_power_of_two

sub next_power_of_two {
    my %s;
    @s{1..shift} = ();
    local $_ = %s;
    return m{/(.*)};
}
сегодня пролетело по fun with perl - считает следюущую за числом степень двойки ;)
Thursday, October 25th, 2007
8:29 pm
[_ltt_]
Сегодня был откопан замечательный кусочек кода:
my $res = '';
vec($res, $arg, 1) = 1;
$res = unpack('c', $res);

который всего-то навсего эквивалентен
my $res = 2 ** $arg;

Вот так вот ;)
Wednesday, October 10th, 2007
11:14 am
[sharifulin]
Thursday, October 4th, 2007
1:18 pm
[sharifulin]
Перевод ключей хеша в верхний регистр

Просматривая одни исходники, нашел такую замечательную функцию:

# Make all hash keys CAPITAL
sub _cap_hash {
my $self = shift;
my $rhash = shift;
my %hash = map {
my $k = $_;
my $v = $rhash->{$k};
$k =~ tr/a-z/A-Z/;
$k => $v;
} keys(%{$rhash});
return \%hash;
}

Вот жжесть :)

Мой вариант:
sub _uc { +{ map { (uc) => $_[1]->{$_} } keys %{$_[1]} } } 

cross-post
Wednesday, July 18th, 2007
5:39 pm
[sharifulin]
Perlfuck ищет таланты
Сообщество ru_perlfuck ищет таланты!
Monday, June 25th, 2007
2:24 pm
[sharifulin]
Существует или нет?
Как только в голову приходят такие вещи:
 map { $_->{'tag'} ? $_->{'tag'} : () }


Только так:
 map { $_->{'tag'} || () }


или так:
 grep { $_ }
 map  { $_->{'tag'} }
Monday, April 9th, 2007
7:22 pm
[sharifulin]
Заведение лишней переменной
Завести переменную только для того, чтобы ее порезать регекспой и взять расширение:


my $video = $PARAM->{'video'}->{'name'};
$video =~ s/^(.*)\./$id./;
print 'video/'.$video;


Почему не - конкатенация $id и m-регекспы, выдирающей расширение, и без переменной и не меняя исходный $PARAM.
2:28 am
[sawoy]
do/require and $!
интересный пример - как не надо проверять успешное подключение/исполнение файла:

main.pl:

#!/usr/binperl

use strict;
use warnings;

do 'file.pl';
die ("help me! - $!") if ($!);

exit 0;


file.pl - любой валидный синтаксически корректный перл скрипт,
у которого нет в конце перевода строки.

при исполнении main.pl выходит с ошибкой "help me! - Bad file descriptor"

П.С.: поведение еще зависит от версии перла - для 5.8.8 повторялось стабильно, для 5.6.х уже нет.
Friday, April 6th, 2007
12:40 pm
[svndkr]
неочевидное поведение my
Был у меня случай с my, может конечно все это знают, но я например не знал, поэтому пишу сюда. Например такой код:


#!/usr/local/bin/perl -w
use strict;
test('yyy');
test();
sub test {
my $test = 'xxx' if 0;
$test = $_[0] if @_;
warn "TEST:[".$test."]";
}

Выведет 2 раза "TEST:[yyy]".
Собственно никогда не надо писать my ... if ..; ибо результат непредсказуем. Уже потом я прочитал в perlsyn:"The behaviour of a "my" statement modified with a statement modifier conditional or loop construct (e.g. "my $x if ...") is undefined. The value of the "my" variable may be "undef", any previously assigned value, or possibly anything else. Don't rely on it. Future versions of perl might do something different from the version of perl you try it out on. Here be dragons."
11:45 am
[sharifulin]
11:25 am
[sharifulin]
Hello world!

Hello world!

Комьюнити создано по требованию трудящихся, преобразовано из журнала [info]perlfuck, после 1 дня существования.


Здесь могут публиковаться различные скрипты, модули, отрывки кода, готовые решения и прочее на языке Perl,
ТОЛЬКО с одним условием, что они написаны кем-то на полном серьезе, но на самом деле FUCK, над которым можно только посмеяться и больше так НИКОГДА не писать.

Что-то наподобие Perlfuck Cookbook, документация здесь - perldoc perlfuck.

Идея sharifulin

Спасибо за внимание.

 
- Поехали!
My Website   About LiveJournal.com