Смысл выкладывания сюда этой функции,- сделать её лучше ;). Сам не могу, тк не имею хорошего опыта работы на 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