Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
| |
Если честно, я не понял что имеется в виду.. 17.07.04 06:21 Число просмотров: 1356
Автор: !? <!?> Статус: Member
|
> ...значительно эффективней будет сложить идентификаторы не > в массив, а в хэш, в котором хранить только checked, это > избавит от необходимости крутить циклы и сильно упростит > код. Если честно, я не понял что имеется в виду..
На случай, если мы не допоняли друг друга,- @xMA содержит информацию только об одном пользователе и используется во время сохранения изменений настроек.
То бишь юзер передаёт в @xMA свои текущие check-настройки, а скрипт должен убрать/добавить его ID в соответствующие листы.
> И все-таки стоит завязывать с привычкой использовать @x[$i] > вместо $x[$i], это лишние преобразования. Ок, учту ;).
|
<programming>
|
[bum, perl] Функция замороченная. 1 шт. 16.07.04 20:00
Автор: !? <!?> Статус: Member
|
Смысл выкладывания сюда этой функции,- сделать её лучше ;). Сам не могу, тк не имею хорошего опыта работы на perl, но вижу, что это выглядит просто нелепо по сравнению с чистым кодом ;).
Комменты:
Массив @xMA содержит список, элементы которого или равны "checked", или "".
Количество элементов напрямую связано с файлами "conf/ma/".$x, содержащими ID пользователей, имеющих "checked" в массиве @xMA с индексом $x.
Конечно, на всякий случай для каждого пользователя создаётся отдельная запись, но это на случай повреждения какого либо из "conf/ma/".$x.
for ($x= 0; $x< 2; $x++)
{
open $xT, "conf/ma/".$x;
@xT= <$xT>;
close $xT;
grep {$_=~ s/\r|\n//g;} (@xT);
if (@xMA[$x] eq "checked")
{
$x0= 0;
foreach (@xT)
{
$x0= 1 and last if $uID eq $_;
}
push @xT, $uID if $x0 eq 0;
} else
{
for ($xT= 0; $xT< @xT; $xT++)
{
@xT[$xT]= "" and last if @xT[$xT] eq $uID;
}
}
open $xT, ">conf/ma/".$x;
foreach (@xT)
{
print $xT $_."\n" if $_ ne "";
}
close $xT;
}
|
|
не считая мелочей типа замены grep на chomp... 17.07.04 00:54
Автор: dl <Dmitry Leonov>
|
...значительно эффективней будет сложить идентификаторы не в массив, а в хэш, в котором хранить только checked, это избавит от необходимости крутить циклы и сильно упростит код.
И все-таки стоит завязывать с привычкой использовать @x[$i] вместо $x[$i], это лишние преобразования.
|
| |
Если честно, я не понял что имеется в виду.. 17.07.04 06:21
Автор: !? <!?> Статус: Member
|
> ...значительно эффективней будет сложить идентификаторы не > в массив, а в хэш, в котором хранить только checked, это > избавит от необходимости крутить циклы и сильно упростит > код. Если честно, я не понял что имеется в виду..
На случай, если мы не допоняли друг друга,- @xMA содержит информацию только об одном пользователе и используется во время сохранения изменений настроек.
То бишь юзер передаёт в @xMA свои текущие check-настройки, а скрипт должен убрать/добавить его ID в соответствующие листы.
> И все-таки стоит завязывать с привычкой использовать @x[$i] > вместо $x[$i], это лишние преобразования. Ок, учту ;).
|
| |
grep на chomp? 17.07.04 01:00
Автор: Heller <Heller> Статус: Elderman
|
Скорее замены $_=~ s/\r|\n//g на chomp, а grep заменить на map..
Согласен с dl, но ещё на днях сам посмотрю по-подробнее
|
| | |
угу, работает %) 17.07.04 06:39
Автор: !? <!?> Статус: Member
|
grep {$_=~ s/\r|\n//g;} (@xT);
заменил на
chomp (@xT);
Про chomp я совсем забыл что-то, часто использую комбинацию $_=~ s/\r|\n//g; вместо него..
|
| | |
chomp прекрасно работает и с массивами, обрабатывая каждый элемент 17.07.04 01:10
Автор: dl <Dmitry Leonov>
|
|
| | | |
Чего-то форму я теряю. Ошибаться часто стал. Надо пива меньше пить ;-( 18.07.04 00:51
Автор: Heller <Heller> Статус: Elderman
|
|
|
|