LINUX.ORG.RU

Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Языку Perl исполнилось 16 лет!

>Работа с массивами в перл - полнейший отстой.
>Чего стоит несоблюдение последовательности обхода ключей в массиве в цикле foreach. Костыли, костыли... Весь язык - один большой костыль.

с этого места пожалста подробнее. это похоже на кто-то не вкуривает, а критиковать любит (3.14здит попросту)

** ()

Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Языку Perl исполнилось 16 лет!

"Чего стоит несоблюдение последовательности обхода ключей в массиве в цикле foreach" пример в студию - пока не докажешь, буду думать, что костыль только писателя у которого было несоблюдение :)

anonymous ()
Sun-ch

Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Языку Perl исполнилось 16 лет!

use Class::Maker::Examples::Array;

Array->new( array => [1..100] );

# standard

$a->shift;

$a->push( qw/ 1 2 3 4 / );

$a->pop;

$a->unshift( qw/ 5 6 7 / );

$a->reset;

$a->join( ', ' );

# extended

$a->count;

$a->get;

$a->pick( 4 );

$a->union( 100..500 );

$a->intersection( 50..100 );

$a->difference( 50..100 );

# ()

Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Языку Perl исполнилось 16 лет!

хы, че на цпане лежит - во всю жисть не усвоишь, тем паче без знания англицкого :) Мне вот надо имаджи обрабатывать, напишу алгоритм на перле максимально просто (пусть и длинно), потом сяду с сишным программистом и буду с ним писать на сях...

anonymous ()

Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Языку Perl исполнилось 16 лет!

Живи и развивайся , Дорый Перл!

>>Кхе-кхе ;) В пхп это делается так: array_intersect() array_merge()

>>А как на счет array_diff() ? Работа с массивами в перл - полнейший отстой. Чего стоит несоблюдение последовательности обхода ключей в массиве в цикле foreach. Костыли, костыли... Весь язык - один большой костыль.

Люблю таких идиотиков :-)). В PHP нет нормальных массивов в общепринятом смысле. В нем есть только связка хешь-массив. Поэтому и нужно так моного всего. Иначе невозможноно было бы работать с ним вообще.

Остров.

anonymous ()
Sun-ch

Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Языку Perl исполнилось 16 лет!

CPAN пользоваться можно, а самое главное НУЖНО

Все уже написано, не помню кто сказал, что если ты не нашел

решения на CPAN, то ты не до конца понимаешь задачу.

Вон паренек парился префоркед сервер пул писал целый год,

а на CPAN вон сколько решений, ищется за минуту :)

NetServer-Generic-1.03 > examples/preforked-shttpd

POE::Component::Server::PreforkTCP

Perl TCP server , which can fork processes before request and each process can do with requestion corcurrently as same as Apache.

POE::Class::Server::PreFork

POE::Class::Server::PreFork::UNIX

Net::Server::PreFork

Net::Server::PreForkSimple

# ()

Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Языку Perl исполнилось 16 лет!

вот мой префоркед сервер (на 70% слизан с одной книжки). 
Что он делает. есть некая другая прога, которая пишет в конец файла 
информацию, которую надо отправлять на порт. В программе форкается пул
 серверов (чтобы быстрее отрабатывать соединения мне не критично число
 подключений в секунду, мне критично, чтобы они корректно 
отсоединялись), которые висят на определенном порут и валят туда 
методом tail -f socket_demo.log данные, добавляемые в сокет:

#!/usr/bin/perl -w

use File::Tail;
use IO::Socket;
use Symbol;
use POSIX;

$l = 'socket_demo.log';
$PORT=1234;

$server = IO::Socket::INET->new( Proto => 'tcp',
   LocalPort => $PORT, Listen => SOMAXCONN,
   Type => SOCK_STREAM, Reuse => 1) or die " making socket: $@";

$PREFORK =5;
$MAX_CLIENTS_PER_CHILD = 5;
%children=();
$children=0;
make_new_child() for(1 .. $PREFORK);
$SIG{CHLD}=\&REAPER;
$SIG{INT}=\&HUNTSMAN;
while(1){
  sleep;
  for($i=$children; $i<$PREFORK; $i++){make_new_child()}
}

sub tail_socket{
  return $fi = File::Tail->new(
    name => $l,
    maxinterval => 0.1,
    adjustafter => 1000000000,
    interval => 4,
    tail => 0)
}

sub make_new_child{
  my $pid;
  my $sigset;
  $sigset=POSIX::SigSet->new(SIGINT);
  sigprocmask(SIG_BLOCK, $sigset) or die "can't block SIGINT for fork: $!\n";
  die "fork: $!" unless defined($pid = fork);
  if($pid){
    sigprocmask(SIG_UNBLOCK, $sigset) or die "can't unblock SIGINT for fork: $!\n";
    $children{$pid}=1;
    $children++;
    return;
  } else {
    $SIG{INT} = 'DEFAULT';
    $SIG{CHLD}='IGNORE';
    sigprocmask(SIG_UNBLOCK, $sigset) or die "can't unblock SIGINT for fork: $!\n";
    for($i=0;  $i<$MAX_CLIENTS_PER_CHILD; $i++){
      $client = $server->accept() or last;
      &tail_socket();
      while(1){
        print $client $_ while($_=$fi->read);
      }
    } exit;
  }
}

sub HUNTSMAN{
  local($SIG{CHLD})='IGNORE';
  kill 'INT' => keys %children;
  exit;
}

sub REAPER{
  $SIG{CHLD}=\&REAPER;
  my $pid = wait;
  $children--;
  delete $children{$pid};
}


Но самая жопа это клиент, который обязан уметь сидеть за GPRS 
соединением и уметь отлавливать падение вышеприведенного 
сервера+отключение роутинга+физическое падение машины, на которой 
вышеприведенный сервер работает+отслеживать ping timeout и при всем 
при этом уметь уходить в автодозвон до сервера в перечисленных случаях
 разрыва связи. Единственное что я не понял как сделать нормально, это
 как определять, когда pppd отключает таблицу роутинга. 

И еще ведь там как все происходит, канал на сотовом телефоне отвалился
 и висит, никто ничего не знает, просто нет связи и все. Восстановить 
связь можно только ручками. Вот этот драный клиент и запускает 
перелогин для телефона (если не произошло изменения таблицы роутинга 
и просто не пингуется)...

p.s. я не знаю, сколько мне лет надо писать на сях, чтобы написать такой 
сервак на сях и тем более этот зубодробительный клиент отслеживающий виды 
разъединения связи (в сущности все сводиться там к отслеживанию 
таймаута по пингу, а как route -n проверять - я не понял, 
потому он иногда виснет просто)...

anonymous ()

Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Языку Perl исполнилось 16 лет!

еслиб не форкаться, то в отслеживающем соединение клиенте стояли бы подряд два цикла while(1){ping} и while(<$client>){read from socket}, а так они разнесены по процессам... и зависание пинга в while(1) по $SIG{ALARM} отслеживать надо.

как это линейно делать - не ясно... а тут форкнулся, отлавливай $SIG{HUP} ( не умею до конца правильно отлавливать, умею чтобы зомби не было) - и программа упростилась в 10-20 раз...

такие вот дела на перле делал полгода назад...

anonymous ()

Slackware 10 release had bin announced

Саныч блядь цука ты ваще хоть чонть помнишь?

это я видел в какой-то книжке ...

это на sql одна строчка тока я забыл ...

да ты нихира незнаишь ваще, только умеешь делать cut-n-paste мышкой любой текст с упоминанием бзд на лор.

заколебал

# ()
[#]  
Zulu

Re: Языку Perl исполнилось 16 лет!

Long live!... 8)

**## ()
[#] Ответ на: Re: Языку Perl исполнилось 16 лет! от anonymous 22.12.2003 20:57:54  

Re: Re: Языку Perl исполнилось 16 лет!

дык проги должны ходить под виндой, линухом, т.е. быть кроссплатформенными. яб сказал qx[route -n] каждую секунду, и был бы счастлив. я не из спортивного интереса так все делаю.

anonymous ()
[#] Ответ на: Slackware 10 release had bin announced от XYZ_C_FOPbi 22.12.2003 20:23:56  

Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Языку Perl исполнилось 16 лет!

малшык хотел сказать что это даже не одна строка, а одно слово, правда малшык? подсказываю, а то боюсь от натуги разорвет. "DISTINCT".

но ведь этот тред не про то что SQL исполнилось много-много лет, правда? учимся читать. потом учимся читать вдумчиво. потом может наступить момент когда большие дяди перестанут посылать тебя ;)

** ()
[#]  

Re: Языку Perl исполнилось 16 лет!

Чёта всё зашло в тупик. У меня между ушами.

Дык кто рулит то? Пёрл, Змея или СЛАКА? Кто у кого сосёт? Что сосёт? Зачем это делает?

Росссссияне, все же знают, что самый главнный язык в отчизне - бейсик. Тот который ВБА. И Гейц - пророк его.

Ходят слухи, что у бейсика не сосёт только "язык один с". Но это наверное враки.

Обосновываю, почему это враки:

Дано: у меня есть язык.

Вопрос: что он может сосать?

Ответ: всё что угодно, если это не противно.

Вывод: ни один язык не будет сосать другй язык без удовольствия.

-----------------------------------------------------------

Ребята, все языки хороши. Даже Русский.

P.S. Пьяный я в ... Чего и Вам желаю. С Новым Годом!

anonymous ()

Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Языку Perl исполнилось 16 лет!

> лучше бы тебе не появляться на свет с таким именем!

Да, чтоб ты издох, факин HellAngel! Чтоб твои белые тапочки я наблюдал
в деревянном ящике.

anonymous ()

Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Языку Perl исполнилось 16 лет!

> В PHP нет нормальных массивов в общепринятом смысле.

Ну и что? Кого волнует внутренняя реализация? Меня не волнует.
Если она сделана толково...

anonymous ()

Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Языку Perl исполнилось 16 лет!

> с этого места пожалста подробнее.

Пожалста.

keys HASH

Returns a list consisting of all the keys of the named hash. (In a scalar context, returns the number of keys.) The keys are returned in an _apparently__random__order_. The actual random order is subject to change in future versions of perl, but it is guaranteed to be the same order as either the values() or each() function produces

Теперь втюхиваешь?

anonymous ()

Языку Perl исполнилось 16 лет!

ты путаешь массивы с хешами. оба типа в perl базовые, часто ведут себя одинаково в скалярном и списковом контексте, но есть и принципиальные отличия. массив (@array) - это то к чему все привыкли в С и Pascal. значение можешь получить и модифицировать по индексу. у массивов этого типа значения хранятся в предсказуемом порядке. хеш (%hash) - это ассоциативный массив, в котором элемент доступен по ключу. порядок хранения пары ключ/значение не определен. если тебе понятнее аналогия с миром железа, то поищи различие между памятью с прямым доступом и ассоциативной. аналогия мне кажется уместной, хотя и не вполне корректной.

эти два типа массивов не комплементарны, но все же хорошо дополняют друг друга. возможно в perl6 появятся еще и хеш-массивы, которые будут иметь некоторые черты и того и другого типов.

** ()

Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Языку Perl исполнилось 16 лет!

ты опоздал. но ход твоих мыслей мне нравится, ты просто рожден писать на перле :))

i_see_you_white_bauchle if i_in_coffin

P.S.: напился, английский стал более идеоматическим чем perl

** ()

Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Языку Perl исполнилось 16 лет!

Всем хорош перл. Только после него невозможно на другом языке программировать. Недавно понадобилось контрольную работу на Visual Basic - 300 раз оплевался.

anonymous ()
[#]  

Re: Языку Perl исполнилось 16 лет!

use perl;

There is more than one way to do it. (К первому высказыванию тоже относится ;))

С наилучшими, null666.

anonymous ()
[#] Ответ на: Re: Языку Perl исполнилось 16 лет! от anonymous 23.12.2003 11:10:49  

Re: Re: Языку Perl исполнилось 16 лет!

> There is more than one way to do it. (

А вот в этой фразе и содержится самая главная зараза, которая
окончательно погубила (местами неплохой) perl. На самом деле, есть
только Один Путь! И конце окажется только Один ;)

anonymous ()
[#]  

Re: Языку Perl исполнилось 16 лет!

Присоединяюсь ко всем поздравлениям! Simple Den.

anonymous ()
[#] Ответ на: Re: Языку Perl исполнилось 16 лет! от Eldhenn 23.12.2003 12:07:47  

Re: Re: Языку Perl исполнилось 16 лет!

чтобы CGI работали в безопасном режиме, то надо ставить ключ -T:

#!/usr/bin/perl -wT

anonymous ()
[#] Ответ на: Re: Re: Языку Perl исполнилось 16 лет! от anonymous 23.12.2003 14:32:21  

Re: Re: Re: Языку Perl исполнилось 16 лет!

Perl рулит и Python рулит. Просто два разных языка, вот и всё. "Что круче - Камаз или Волга"? Развели бодягу мутную, блин...

PS: Тому у которого "в for ключи не по порядку в массивах" - ты б сначала выучил, что такое массив, и что такое хэш...

* ()
[#] Ответ на: Re: Языку Perl исполнилось 16 лет! от anonymous 23.12.2003 0:25:01  

Re: Re: Языку Perl исполнилось 16 лет!

Ребята, все языки хороши. Даже Русский. P.S. Пьяный я в ... Чего и Вам желаю. С Новым Годом!

>>>>>>>> Вот те раз, а где это уже новый год отмечают? У меня на календаре токо 23 Дек.

anonymous ()