Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 05:21 27.04.24 
Компютри и Интернет
   >> Perl
Всички теми Следваща тема *Кратък преглед

Страници по тази тема: 1 | 2 | 3 | (покажи всички)
Тема Kade im e greshkata?  
Автор Teшkapcko_koпeлe (grrrr)
Публикувано20.08.03 17:06



Zna4i napisah edin prost bot za IRC,koito ima glaven script i config.V glavniq script edna podprograma parsva konfiga i si4ko si raboti OK.Primerno:

sub scanconfig {
open(CONF, $conffile) || die "Can't open configuration file!\n";
while (chomp ($_ = <CONF>)) {
last if /^\s*1;\s*$/;
next if /^$/;
next if /^#/;
if ($_ =~ /^\s*\$(.+?)\s*=\s*(?!\\)["']?(.+?)(?!\\)['"]?;\s*$/) {
$nick = $2 if ($1 eq 'nick');
$ident = $2 if ($1 eq 'ident');
$ircname = $2 if ($1 eq 'ircname');
$server = $2 if ($1 eq 'server');
} else {
print "Cannot parse Configuration File\n";
}
close(CONF);
$config{nick} = $nick || die "Nickname missing!";
$config{ident} = $ident || die "No ident in config!";
$config{ircname} = $ircname || die "IRCname missing";
$config{server} = $port || die "No default server found!";
}

Tova e primerniata &scanconf(); subroutine.Ideqta e vzeh ot edin BG sait za IRC,no ne mu pomnq imeto.Problema idva kogato resha da napravq Rehash
na bota.Izpolzvah syshto kakto mom4etata sa napravili v saita:
delete $config{$_} while keys %config;
&scanconf();
Kogato promenq konfig-a i napravq rehash (pone spored men) bi trqbvalo da se iztriqt nastoqshtite stoinosti v %config sled koeto &scanconf() da zaredi hash-a s novite stoinosti,no ne se polu4ava taka,a vsi4ko si zapazva starata stoinost.Moje li nqkoi da mi kaje kade mi e geshkata.Moje bi tozi na4in izobshto ne e uda4en v slu4aq.

Blagodarq predvaritelno na otkliknalite.Molq tezi,koito shte mi prepory4at edin ton knigi ili RTFM da pro4eta da si zapazqt mnenieto za sebe si.Chel sym dostaty4no za sega



Тема Re: Kade im e greshkata?нови [re: Teшkapcko_koпeлe]  
Автор malkia muk (непознат )
Публикувано22.08.03 16:00



korigirai si procedurata po slednia na4in i nema da ima6 problemi

sub scanconfig {
open(CONF, $conffile) || die "Can't open configuration file!\n";
while (chomp ($_ = <CONF>)) {
last if /^\s*1;\s*$/;
next if /^$/;
next if /^#/;
if ($_ =~ /^\s*\$(.+?)\s*=\s*(?!\\)["']?(.+?)(?!\\)['"]?;\s*$/) {
$nick = $2 if ($1 eq 'nick');
$ident = $2 if ($1 eq 'ident');
$ircname = $2 if ($1 eq 'ircname');
$server = $2 if ($1 eq 'server');
} else {
print "Cannot parse Configuration File\n";
}
close(CONF);
delete @config{keys %config}; # tova sas sigurnost sha ti zatrie HASH-a :o)
$config{nick} = $nick || die "Nickname missing!";
$config{ident} = $ident || die "No ident in config!";
$config{ircname} = $ircname || die "IRCname missing";
$config{server} = $port || die "No default server found!";
}



Тема Re: Kade im e greshkata?нови [re: malkia muk]  
Автор Teшkapcko_koпeлe (grrrr)
Публикувано25.08.03 15:12



:)) I taka ne stava moi 4ovek.To sigurno trie hash-a,noposle qvno po nqkakav na4in si4ko se vryshta kakto si e bilo(toest vednaga sled &scanconfig() ).Ne znam izobshto kakvo stava.A i kato gledam toq forum izcqlo ve4e e po4inal i nikoi nishto ne pishe v nego.Pylna mizeriq.. cc c c



Тема Re: Kade im e greshkata?нови [re: Teшkapcko_koпeлe]  
АвторPavel (Нерегистриран)
Публикувано26.08.03 13:16



Nqmah vreme da cheta koda no po tova koeto kazvash trqbwa da si suzdal closure po nqkakuw nachin.
Potursi poveche za closure w Perl iz Google. Nakratko tova e zapazvane na statusa na nqkakwi danni wupreki che widimo si izlqzul ot regiona im na validnost.

Sutho ako moje postni nahcina po koito wikash subroutina - nqj weroqtno tam se oplitata neshtata



Тема Re: Kade im e greshkata?нови [re: Pavel]  
Автор Teшkapcko_koпeлe (grrrr)
Публикувано29.08.03 17:16



Zna4i podprogramata q izvikvam ot druga podprograma
&rehashing();
sub rehashing { #koqto za sega napravih samo da vika &scanconfig();
&scanconfig();
}

nai-interesnoto e,4e kogato se startira kato za na4alo slednite skalari si priemat stoinost:
open(CONF, $conffile) || die "Can't open configuration file!\n";
while (chomp ($_ = <CONF>)) {
last if /^\s*1;\s*$/;
next if /^$/;
next if /^#/;
if ($_ =~ /^\s*\$(.+?)\s*=\s*(?!\\)["']?(.+?)(?!\\)['"]?;\s*$/) {
$nick = $2 if ($1 eq 'nick');
$ident = $2 if ($1 eq 'ident');
$ircname = $2 if ($1 eq 'ircname');
$server = $2 if ($1 eq 'server');
} else {
print "Cannot parse Configuration File\n";
}


no kogato vsi4ko tova trqbva da premine prez sub rehashing promenlivite $nick,$ircname,$server i t.n.t ne priemat nikakva stoinost,a pone na pryv pogled cqlata podprograma &scanconfig(); se izpylnqva po edin i sasht na4in.Zna4i tova: $nick = $2 if ($1 eq 'nick'); trqbva da vryshta false v tozi slu4ai,no zashto vryshta false 4ak vtoriq pyt (kogato &scanconfig() e izvikan ot &rehashing() ) ,a pyrviq pyt si4ko si inava bez problemi.
blagodarq prevaritelno ako nqkoi mi pomogne zashtoto mi svyrshiha ideite ve4e.



Тема Re: Kade im e greshkata?нови [re: Teшkapcko_koпeлe]  
Автор pencho666 (от пенчево)
Публикувано29.08.03 18:46



Така, нека да определим какъв е проблема, защото аз не можах да го разбера:
1. Ако проблема е да се затрие hash-а, всички предложени идеи до тука са неефективни. Принипно трябва да работят, но понякога има и бъгове. Единственият стабилен трияч на hash е безкрайно прост: %config=();
Това е напълно достатъчно.

2. Наистина нямам време да чета кода, но обърни внимание на следното:
Къде си дефинирал config и как. Ако си го дефинирал някъде с my, е възможно видимостта му да е ограничена. Затова просто махни "my" и виж дали ще се оправи



Тема Re: Kade im e greshkata?нови [re: pencho666]  
Автор Teшkapcko_koпeлe (grrrr)
Публикувано29.08.03 21:12



kakto pisah v predishniq posting- greshkata se okaza ne vav hash-a,a vav samoto prisvoqvane na stoinosti :

sub scanconfig {
open(CONF, $conffile) || die "Can't open configuration file!\n";
while (chomp ($_ = <CONF>)) {
last if /^\s*1;\s*$/;
next if /^$/;
next if /^#/;
if ($_ =~ /^\s*\$(.+?)\s*=\s*(?!\\)["']?(.+?)(?!\\)['"]?;\s*$/) {
$nick = $2 if ($1 eq 'nick');
$ident = $2 if ($1 eq 'ident');
$ircname = $2 if ($1 eq 'ircname');
$server = $2 if ($1 eq 'server');
Zna4i tezi scalar-i si priemat stoinost kakvato si trqbva kogato startiram programata,no kogato tazi podprograma se izvika ot drug sub i neshto se skapva i priemat undef stoinosti.I tova se slu4va edinstveno s tazi 4ast ot podprogramata.Ostanalata kadeto tezi scalari predavat stoinostta si na %hash-a si e rabotila vinagi kakto trqbva.



Тема Re: Kade im e greshkata?нови [re: Teшkapcko_koпeлe]  
Авторpencho666 (Нерегистриран)
Публикувано31.08.03 17:19



Възможно е някъде да си локализирал тези променливи. В perl няма случайни прояви. Гледай за my, local или дублиране на имената



Тема Re: Kade im e greshkata?нови [re: pencho666]  
Автор Teшkapcko_koпeлe (grrrr)
Публикувано31.08.03 20:35



Ne e vyzmojno,za6toto tezi premenlivi sa edinstvenite,koito sa globalni i edinstveno tqh ne izpolzvam nikade kato localni.A i kakto kazah po-gore ,kogato se stratira programata tezi globalni promenlivi si priemat stoinost ot RegEx-a,no pri "rehash" sub-a izvikva "scanconfig" otnovo i togava ve4e vse edno regex-a ne namira takiva savpadeniq i tezi promenlivi ne priemat stoinost.



Тема Re: Kade im e greshkata?нови [re: Teшkapcko_koпeлe]  
Автор pencho666 (от пенчево)
Публикувано01.09.03 01:11



Мисля че е безмислено да продалжаваме този диалог околу тази тема. Моят вече няколкогодишен опит показва че случайни неща в Perl няма. Затова ти казах да обърнеш внимание на това. Както и да е, не ми се спори по този въпрос повече :)




Страници по тази тема: 1 | 2 | 3 | (покажи всички)
Всички темиСледваща тема*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.