Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - Ivan Kolesnikov

Страницы: [1] 2 3
1
На сколько я помню каждый поток получает копию переменных, и соответственно ничего не получается, я бы сделал так: знаешь номер запускаемого потока, значит можешь расчитать нужные элементы, которые брать скажем вызывать:

my $p=sub([@old(10*$index..10*$index+9]]);

Где $index - номер потока (0..)
То есть все будут работать с одним массивом, но получать различные его срезы.

Почему не используешь кнопку # (code) для оформления кода моноширным шрифтом, так читать намного проще.

2
Perl / Загрузка файла
« : 29 Сентября 2005, 12:43:56 »
Вот тебе пример:

print "Content-Disposition: attachment; filename=file_name.txt\\n\\n";
open(FILE, \'binmode(FILE);
binmode(STDOUT);
print ;
close(FILE);

3
Дело в том что Perl преобразует автоматически все ключи хеша в строки (в том числе и ссылки). Я бы использовал другую конструкцию: вспомогательный хеш, в котором в качестве ключей было строковое представление ссылки, а в качестве значения сама ссылка.


use strict;
my ($a, $b, $c) = (1,2,3);

my %ref_values = (
  \\$a => \\$a,
  \\$b => \\$b,
  \\$c => \\$c
);

my %hash = (
  \\$a => \'a\',
  \\$b => \'b\',
  \\$c => \'c\'
);

foreach (keys %hash) {
  print ${$ref_values{$_}}, "\\n";
};

4
Perl / Разбиение длинной строки
« : 26 Сентября 2005, 13:54:12 »

$str =~ s/(\\S{50})(?=\\S)/$1 /g;

Последовательность из 50 непробельных символов, за которыми следует еще один непробельный (его мы не берем, а только заглядываем вперед), то заменяем их на эту последовательность + пробел.
Может быть я и не учел что-то, но на простых примерах работает :).

5
Perl / Запрос Oracle некорректно выполняется
« : 26 Сентября 2005, 13:22:57 »
А можно привести сам запрос.
Я выполнял запрос insert в таблицу, в общем в ней 2 поля: одно на 3000 символов, другое на 1000. Общая длина запроса 4086.
Все добавилось без проблем.
Связка Perl ActiveState + Oracle client 9.2

6
Perl / Сессии и куки
« : 16 Сентября 2005, 13:00:43 »

$cook=cookie( -name    => \'CGISESSID\',
               -expires => \'+4M\');

А разве значение куки не нужно передавать?

$cook=cookie( -name    => \'CGISESSID\',
               -expires => \'+4M\',
               -value => $sid);

7
Perl / Многоуровневое меню
« : 16 Сентября 2005, 11:45:15 »
Да так все просто, но вот чтобы построить такое дерево, нужно выполнить кучу запросов. Если не брать в расчет что по такой структуре, скажем oracle строит дерево автоматически, но я думаю, что тоже используется куча запросов, только на сервере.

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

Гораздо быстрее в плане вывода результата можно сделать используя Nested Set. Да придется повозиться с добавлением, удалением и темболее с перемещением, зато выборка будет идти намного быстрее, чем в твоем варианте.

Извиняюсь, не дочитал до конца, если не надо выводить все дерево одновременно, то твой вариант будет более оптимальным.

8
Perl / Опять regex`пы
« : 16 Сентября 2005, 11:37:39 »
Я бы использовал следующий regexp:

qr|.*?$f.*?(?:<.*?>)*(.*?)(?:<.*?>)*|

Где $f = "Диагональ" ...

9
Perl / Многоуровневое меню
« : 16 Сентября 2005, 11:08:02 »
Если задал вопрос, то ответь не него, хоть и нашел ответ сам. Другим ведь тоже интересно :)

10
Всё о Html / Формирование ссылки mailto:
« : 15 Сентября 2005, 11:26:53 »
Цитировать
проверял так: поставлю один лишний пробел - ссылка не работает, уберу его - все нормально.

Скорее всего Вы неправильно формируете адрес, для примера следующий адрес работать не будет:

[url]http://test.ru?param1=aaaa[/url] bbbb cccc

Необходимо передаваемые параметрые преобразовывать: если символ a-zA-Z0-9_ - то оставить его неизменным, если пробел, то заменить на +, все другие символы заменить на %[код символа]
Используя этот алгоритм получаем:

[url]http://test.ru?param1=aaaa+bbbb+cccc[/url]

Возможно я не все учел в алгоритме, толком не помню :)

11
Perl / syserr = Connection reset by peer
« : 06 Сентября 2005, 08:55:06 »
Скорее всего ошибка в том что необходимо экранировать @, а то @server воспринимается как массив, попробуйте выполнить:

print("mount_smbfs -N -E koi8-r:cp866 -I 192.168.0.1 //sintez@server/work /mnt/work");

У меня результат:

mount_smbfs -N -E koi8-r:cp866 -I 192.168.0.1 //sintez/work /mnt/work

А вообще совет используйте use strict;

12
Perl / сравнение чисел
« : 31 Августа 2005, 14:10:51 »
А дело в том, что операции: lt gt le ge eq ne cmp рассматривают переменные как строки, а для чисел нужно использовать: < > <= >= == != <=> . Почитай perldoc perlop

13
Perl / Расшифрока строки...
« : 31 Августа 2005, 09:40:07 »

$str =~ s/&#(\\d+);?/chr($1)/ge;

14
Perl / Нужна помощь в разборе строки!
« : 23 Августа 2005, 11:01:44 »
Цитировать

P.S. Небольшая неточность по Вашему примеру. В результате исполнения кода, в файл будут записаны строки без первых трех байтов, а надо бы с ними.

Это не неточность, просто я так понял, но исправить ведь не сложно :)

15
Perl / Скачивание файлов. Пища для ума.
« : 22 Августа 2005, 16:00:01 »
Только мне не понятно, а кто будет на клиенте скрипт запускать?

Страницы: [1] 2 3