LINUX.ORG.RU

Ответ на: комментарий от anonymous

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

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

HellAngel ★★
()
Ответ на: комментарий от anonymous

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

anonymous
()
Ответ на: комментарий от anonymous

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 );

Sun-ch
()
Ответ на: комментарий от Sun-ch

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

anonymous
()
Ответ на: комментарий от anonymous

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

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

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

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

Остров.

anonymous
()
Ответ на: комментарий от anonymous

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

Sun-ch
()
Ответ на: комментарий от Sun-ch

вот мой префоркед сервер (на 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
()
Ответ на: комментарий от anonymous

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

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

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

anonymous
()
Ответ на: комментарий от Sun-ch

Slackware 10 release had bin announced

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

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

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

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

заколебал

XYZ_C_FOPbi
()
Ответ на: Re: Языку Perl исполнилось 16 лет! от anonymous

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

anonymous
()
Ответ на: комментарий от anonymous

нет. все-таки @h{@arr}=@arr

это называется "срез". можно конечно сделать и @h{@arr}=(), но use strict и use warn тогда начнут материться

HellAngel ★★
()
Ответ на: комментарий от HellAngel

или можно сделать @h{@arr}=(1 x @arr)

но я не уверен что это быстрее будет

HellAngel ★★
()
Ответ на: Slackware 10 release had bin announced от XYZ_C_FOPbi

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

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

HellAngel ★★
()

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

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

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

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

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

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

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

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

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

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

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

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

anonymous
()
Ответ на: комментарий от HellAngel

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

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

anonymous
()
Ответ на: комментарий от anonymous

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

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

anonymous
()
Ответ на: комментарий от HellAngel

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

Пожалста.

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
()
Ответ на: комментарий от anonymous

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

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

HellAngel ★★
()
Ответ на: комментарий от anonymous

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

i_see_you_white_bauchle if i_in_coffin

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

HellAngel ★★
()
Ответ на: комментарий от HellAngel

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

anonymous
()

use perl;

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

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

anonymous
()
Ответ на: комментарий от anonymous

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

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

anonymous
()

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

anonymous
()
Ответ на: комментарий от anonymous

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

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

Mudvin
()
Ответ на: комментарий от anonymous

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

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

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.