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

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

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 12:24 12.06.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 няма. Затова ти казах да обърнеш внимание на това. Както и да е, не ми се спори по този въпрос повече :)



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



Dobre nqma da q prodyljavame.Iskam samo da poso4a za posledno mqstoto ot kadeto si4ko se skapva kogato se povika ot &rehashing();
### 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 = .........
Zna4i redyt na koito se otvarq config-a (s 4ervenata strelka) se izpylnqva,a ot sledvashtiqt red (sinqta strelka) nadolu go preska4a,dori cikylyt while ne se izpylnqva,a tam nqma promenliva zq obqvqvane
Ako ne iska nikoi da ne otgovarq,za da ne stavat izlishni drazgi.



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



#/usr/bin/perl -w
use strict;

Shte ti pomogne mnogo pri reshavaneto na problema!!!



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



i dvete gi izpolzvam zadyljitelno brat ,ama ne mi pomagat v slu4aq mnogo



Тема Greshkata ti e ...нови [re: Teшkapcko_koпeлe]  
Автор BSD Nomade (зъл гуру)
Публикувано04.09.03 15:29



... 4e se muchish da otkriesh toplata voda.
Za koi ti e da pi6e6 100 reda code, kato imash Config::Ini ?
..... qsno e kolko si 4el


...всички ще врите в Ада! муахахахахахаха }:-]

Редактирано от BSD Nomade на 04.09.03 15:30.



Тема Re: Greshkata ti e ...нови [re: BSD Nomade]  
Автор Teшkapcko_koпeлe (grrrr)
Публикувано04.09.03 17:08



Ami vse pak ne moga da pro4eta si4ko,kaji ot kade da pro4eta za Config::Ini



Тема Re: Greshkata ti e ...нови [re: BSD Nomade]  
Автор Teшkapcko_koпeлe (grrrr)
Публикувано05.09.03 12:12



A ima li nqkoi modul za parse na config,koito da si varvi sas standartnata distribuciq na Perl,zashtoto ne moje na vsqkade kadeto puskam scripta da install Config::Ini



Тема Re: Greshkata ti e ...нови [re: Teшkapcko_koпeлe]  
Автор BSD Nomad (зъл гуру)
Публикувано05.09.03 16:07



За съжаление нямам информация стандартен такъв да е правен до 5.8.0
Има начин и без да се инсталира модула Config::Inifile!
Компилирай го някъде с префикс, различен от този по подразбиране, компресирай компилирания модул и преди да пускаш скрипта просто го разархивирай в текущата директория. За да работи обаче, трябва в началото му да укажеш пътя до модула в @INC, т.е. добави:
use lib "path/to/module";

и с това си готов :)

luck!

...всички ще врите в Ада! муахахахахахаха }:-]


Тема Re: Greshkata ti e ...нови [re: Teшkapcko_koпeлe]  
Автор BSD Nomad (зъл гуру)
Публикувано05.09.03 16:10



Config::Inifile, съжалявам за грешката.
Поразрови из

, има доста изписано по въпроса

...всички ще врите в Ада! муахахахахахаха }:-]

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



gledaj pi4 ne ti trqbwat nikakwi dopulnitelni modul za parse i etc. i etc.
Bota se kazwa ircnewbie i naistina e ot edin sajt za irc (irchelp.unibg.org). Funckiqta rehash beshe dobawena dosta po-kysno, zaradi towa moje bi e i untested i naprawena (skylypena) nabyrzo. Greshkata e wyw while keys, trqbwa da byde foreach keys! Neka si ostanem s dobroto i moje pone edin comment da ostawish ot kyde e original code-a.

Btw garantiram 4e parser-a raboti ako ne mnogo dobre, to dostaty4no :) No e malko bawen s tezi regexes... Ima i dosta po-dobri na4ini



Тема Re: Kade mu e greshkata?нови [re: sofit]  
Автор Teшkapcko_koпeлe (grrrr)
Публикувано09.09.03 09:58



Znam 4e ne mi trqbvat :)).Ideqta vi za toq bot e dobra.V na4aloto go pregledah i mi haresa.Izpolzvam osnovata mu za moq samo,zashtoto iskah da ima savsem drugi raboti otkolkoyo ste smetnali vie 4e e nujno da se slojat.NO.IRCnewbie naistina e dobyr.Az sym v na4alen stadii na rabota s perl i prosto mi trqbvashe ideq s koqto da potrniram malko i toq bot mi beshe dobre doshal.Mislq 4e tova koeto sym napravil e dobro syshto(pone kato za na4alo i za na4inaesht) ne mislq da go pokazvam nqkade pone za sega zashtoto se zanimavam s nego prosto ot liubopitstvo,no ako izlezne neshto interesno ot nego ZADYLJITELNO shte sloja dobri dumi i az vas :))).Az taka i ne razbrah zashto ste go zarqzali toq bot??Az misleh napravo vas da pitam kak da si opravq greshkata no ne vidqh podhodqshta vryzka.Iskam da postavq oshte tuk dobra duma za toq sait zashtoto ste se postarali da slojite dosta raboti tam,koito pone na men sa mi pomagali dosta.Samo ako mojete da mi obesnite kak da go naprava toq bot da otgovarq na CTCP chat ( CTCP PING ve4e go napravih) shte sym mnogo blagodaren.Za sega tova.
Ako iskate da vi pratq scripta kakto e do momenta : aniobash@abv.bg
Sega shte probvam kato smenq WHILE sas FOREACH dali shte se polu4i.
Do skoro



Тема Re: Kade im e greshkata?нови [re: sofit]  
Авторdadasda (Нерегистриран)
Публикувано09.09.03 12:35



Probvah go i sys foreach pak ne stana.Dokolkoto zabelqzah cikylyt izobshto ne zapo4va da cikli bah maaamu,kato 4e li go preska4a



Тема Re: Kade im e greshkata?нови [re: dadasda]  
Авторsofit (Нерегистриран)
Публикувано10.09.03 12:09



wij si hubawo koda, ne moga da ti kaja nisto bez da go widq, ako iskash go prati na mail-a na sajta (DarkChild@programmer.net) i tam ste moga da ti kaja nesto powe4e. Pri segashniq ircnewbie towa e problema, no tej kato ti si go izpolzwal samo kato skele, ne znam kakwo si prawil i ne moga da ti kaja nesto powe4e . Eto kak bi trqbwalo da se prawi DCC wryzka:

pri request na \001DCC CHAT *
toj izglejda taka:
:sofit[dead]!~sofit4e@office2.proshe.bg PRIVMSG gruhgruh :\001DCC CHAT chat 1044990994 3754

trqbwat ti poslednite 2 nesta, poslednoto e porta, prepdoslednoto IP-to w long format convert-va se w readable format taka: inet_ntoa(pack "N", 1044990994);
sled kato imash adresa i porta prosto se wryzwash tam i taka si goworite.

pri request na CTCP CHAT:
:sofit[dead]!~sofit4e@office2.proshe.bg PRIVMSG gruhgruh :\001CHAT

Trqbwa ti da naprawish DCC CHAT taka:
$myiplong = unpack("N",inet_aton("twoetoip"));
$porttoopen = 8718;
print SOCK "PRIVMSG $nick :\001DCC CHAT chat $myiplong $port";
I predi towa razbira se trqbwa da si otworil 8718 porta i da 4akash wryzka kym nego.

best regards,
IRCHelp Team



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



V momenta nqmam dostyp do mashinata kadeto e scripta,no dove4era ili utre shte gledam da go izpratq na tozi e-mail,koito si dal.
Blagodarq mnogo za obqsnenieto za DCC i CTCP



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



Mersi mnogo za pomoshtta :) Oba4e kato mi konvertne IP-to po tozi na4in :
inet_ntoa(pack "N", 1044990994);
i izliza nqkakvo drugo, da ne bi da e vytreshniq adres na mashinata mi? A parsvaneto na konfiga go napravih ve4e po savsem drug na4in - sys index i
substr i sega e mnogo po-barzo,no problema taka i si ostana
pri povtorno parsvane stoinostite stavat undef.
Regards



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



Razbira se, 4e substr() bi bilo po-byrzo ot regex (makar 4e ne se goni byrzinata w powe4e programi na Perl a efektiwenostta.. no wse pak congrats). Ne moga da ti kaja zasto ti se bozi towa, zastoto _WSE OSTE_ ne sym polu4il koda ti. Ste byde dowolen ako go widq. inet_ntoa(pack "N", 1044990994); ste ti wyrne moeto IP (62.73.76.18) ako imash use Socket;
Ex:
$ perl -e 'use Socket;print unpack("N",inet_aton("127.0.0.1"));'
2130706433

$ perl -e 'use Socket;print inet_ntoa(pack "N", "2130706433");'
127.0.0.1

Ima weroqtnost da e wytreshnoto ti IP. Makar 4e sym wijdal 4e BitchX uspqwat nqkak da si komunikirat daje i mashinata da ima wytreshno IP, moje bi prasta obraten chat ili pyk si komunikirat po sywsem drug na4in ?? Ne moga da kaja wyprosa si otprati kym tqh



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



S udovolstvie shte ti go pratq ,no shela na koito e ne mi dava FTP vryzka za da si go drypna na moqta mashina,kato se opravi shte ti go pratq na po-gorniq e-mail,koito si ostavil



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



Abe mai stavam nahalen ama sym dlyjen pak da pitam .
Zna4i kato iskam ot mIRC CTCP chat kym bota toi mi otgovarq,v smisyl 4e mi se pokazva prozor4eto dali priemam,no kato dam accept i dotam.Kakvo imash predvid s tova da otvorq port 8717 i da 4akam na nego?
A za DCC pravq sledmoto:



if (/^:\S+\s+PRIVMSG\s+\S+\s*:\S*DCC\s+CHAT\s+chat\s+(\S+)\s+(\S+)$/) {
my $ip = $1; my $port = $2;
my $dccs = IO::Socket::INET->new(PeerAddr => $1,
PeerPort => $2,
Proto => SOCK_STREAM)
|| die "Not connected: $!\n"
}


Tova li si imasl v predvid za DCC-to ili trqbva adresa ot long format da go convertna v IP ?




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


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

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