Оператор интервала в Perl ..

Тема в разделе "Perl программирование", создана пользователем Psixo, 21 июн 2006.

  1. Psixo

    Psixo Member

    Регистрация:
    21 июн 2006
    Сообщения:
    11
    Симпатии:
    0
    Собственно в чем и вопрос,возможно ли изменить шаг оператора диапозона,по умолчанию он = 1,но если интервал огромный,как в моем случаи и по нему нужно идти с гораздо большим шагом,как выполнить.
    просто по умолчанию он создает массив размером равным концу интервала,никаких ресурсов не хватит.
    Или мне прийдется написать свой код?
     
  2. arto

    arto Member

    Регистрация:
    21 июн 2006
    Сообщения:
    10
    Симпатии:
    0
    # time perl -le 'foreach (1..$ARGV[0]) { print $_; last }' $[2**31-2]
    1
    Real: 0.05s User: 0.00s System: 0.00s
    #
     
  3. Psixo

    Psixo Member

    Регистрация:
    21 июн 2006
    Сообщения:
    11
    Симпатии:
    0
    arto, я вот только не понял что дает это:
    Код (Text):
     $[2**31-2]
    . Если можеш разъясни,а то я не врубился :(
     
  4. arto

    arto Member

    Регистрация:
    21 июн 2006
    Сообщения:
    10
    Симпатии:
    0
    # print $[2**31-2]
    2147483646
    #
     
  5. Psixo

    Psixo Member

    Регистрация:
    21 июн 2006
    Сообщения:
    11
    Симпатии:
    0
    Сколько оно равно это понятно,таким образом можно изменить шаг? и создается ли массив размером $ARGV[0] или нет,если да,то тогда не подходит,вся память будет исчерпана,,свой код я уже написал,но не хотелось бы мудрить и если есть возможность,воспользоваться стандартными средствами Perl-а.

    П.С.: дело в том что это выполняется в скрипте сервера к которому могут обращаться одновременно много пользователеё, при алгоритме с созданием массива одноименной размерности :( сервак просто ляжет
     
  6. arto

    arto Member

    Регистрация:
    21 июн 2006
    Сообщения:
    10
    Симпатии:
    0
    вроде из кода ясно, что не создается.
     
Загрузка...

Поделиться этой страницей