|
Тема |
Re: Проблем при обработка на файлове. [re: acidmax] |
|
Автор | :P (Нерегистриран) | |
Публикувано | 30.12.02 18:28 |
|
|
здравей
и аз мисля че новата парола е имала някакви символи които са ти разбъркали нещата.
и според мен има някои неща които ще е по-добре да оправиш.
например не мисля че 'perl -e ....' е подходящо в случая.
също така ако някъде в тази нова парола има : направо ти съсипва всичко.
и една парола не трябва да е минимум 1 символ, а например поне 5.
за обработката на файла може би е по-добре нещо като:
open F, users.ini or die $!; #ReadOnly
@array = <F>;
close F;
### всеки елемент на @array ти е ред от файла, т.е. user:pass:permissions
s/^\Q$user:$pass:$access\E/$user:$NewPassword:$access/ foreach @array;
ако си намерил usera с тази парола, заместил си каквото трябва
и само записваш масива, независимо променен или не отново във файла.
open F, "> users.ini" or die $!;
print F @array; ### тук внимавай евентуално с новите редове, \n
close F;
субституцията която правиш ми изглежда ОК, но май ще е по-добре с нещата които съм добавил:
^ - начало
\Q и \E - това премахва специалните означения които евентуално има в някоя променлива
Но пак остават проблемите с : и \n защото
потребител:парола
:права:потребител1:парола1:права1
това след потребител:парола си е чист нов ред, т.е. \n
ако можеш по-добре използвай база данни за това нещо, много по-сигурно и удобно е.
и това което съм написал има да се оправя, например не можеш да си сигурен че си намерил user с такава парола и си направил заместването, ...
обикновенно user името се състои само от символи за дума, $user =~ /^\w+$/ or "Incorrect user name";
а и за паролата има някакви подобни ограничения, най-малкото ти можеш да си създадеш такива, например в парола да не се съдържа символа : (тоя разделител най-добре го промени да не е това)
надявам се да съм ти помогнал с нещо от тия писания.
|
| |
|
|
|