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

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

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

Тема Perl problem za men  
Авторhipo (Нерегистриран)
Публикувано06.08.03 00:00



Ucha se da pisha na perl i stignah do edna zadynena ulica. Ako moje nqkoi da mi pomogne shte sym mu blagodaren. Situaciqta e slednata. Otwarqm edin fail dwoichen. Smenqm razelitelq za zapisi i se mucha da obrabotq wseki zapis. Dobre, no problema e tam, che towa koeto sym napisal i tam kydeto izwejdam na ekrana, celiq masiv mi wadi che e s 6 elementa, kato dam da pokaje celiq masiv go pokazwa, no otdelnite elementi ne gi pokazwa. Molq wi kajete mi kade mi e problema. Eto go i source-a

open ( FILE, 'temp.db' ) or die "Couldn't open file temp.db, $!";
binmode( FILE );

$AC=chr(0x3A).chr(0x22);
$/="$AC";

while ( <FILE> )
{
read( FILE, $header, 6 );
@frame=split(//,$header);
print "@frame - $frame[5] \n" ;
}
close FILE;



Тема Re: Perl problem za menнови [re: hipo]  
Авторhipo (Нерегистриран)
Публикувано06.08.03 09:22



Ima i razwitie. Zabelqzah che mi pokazwa s $#frame, che ima 6 zapisa w masiwa. Kogato izwikam $frame[3] mi izliza posledniqt ot @frame? Zashto e taka? Sortira li si? ili kakwo stawa, kak da mahna towa sortirane, ako ima?



Тема Re: Perl problem za menнови [re: hipo]  
Автор pencho666 (от пенчево)
Публикувано29.08.03 19:05



Проблема ти е елементарен. Затова започвам да обяснявам:

open ( FILE, 'temp.db' ) or die "Couldn't open file temp.db, $!";
binmode( FILE );

$AC=chr(0x3A).chr(0x22);
$/="$AC"; Тука казваш - като чета през стриим искам да се спира на 0x3A22

while ( <FILE> )
{
Тука (поради <FILE>) вече си прочел от файла байтове до първият 0x3A22
read( FILE, $header, 6 ); а тука четеш следващите 6, но има игра с буферирането на стриимовете, така че резултата не е много предвидим
@frame=split(//,$header);
print "@frame - $frame[5] \n" ; дъра-бъра
}
close FILE;

Какво трябва да направиш за да оправиш бъга:
Първи вариянт:
open ( FILE, 'temp.db' ) or die "Couldn't open file temp.db, $!";
binmode( FILE );
while ( !eof(FILE) )
{
read( FILE, $header, 6 ); @frame=split(//,$header);
print "\@frame - $frame[5] \n" ;
}
close FILE;

Втори вариянт:
open ( FILE, 'temp.db' ) or die "Couldn't open file temp.db, $!";
binmode( FILE );

$AC=chr(0x3A).chr(0x22);
$/="$AC";

while ( <FILE> )
{
@frame=split(//); print "\@frame - $frame[5] \n" ;
}
close FILE;

Трети вариянт, как бих го написал аз:
open(F,"temp.db"); ако си под Unix нямаш нужда от binmode
$/=chr(0x3A).chr(0x22);
printf "байт номер 5 от този ред е: %s\n",((split)[5]) while <F>;
close(F);

Ако разбира се трябва да вадиш всеки 5-ти пореден байт на всеки завършващ на $/ ред.




Всички темиСледваща тема*Кратък преглед
Клуб :  


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

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