Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Программирование > Perl

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 15.02.2002, 15:24
Unholy вне форума Посмотреть профиль Отправить личное сообщение для Unholy Посетить домашнюю страницу Unholy Найти все сообщения от Unholy
  № 1  
Unholy
 
Аватар для Unholy

Регистрация: May 2001
Адрес: Челябинск
Сообщений: 8
Отправить сообщение для Unholy с помощью ICQ
Question Подскажите - где тут грабли????

Я в перле почти никак, но надо сделать....

Имеется файло usd.pl (скрипт не мой - скачал), которое должно получать дату и текущий курс доллара с сайта РБК и писать в файл... мне надо шоб оно мне в хтмл в нужное место выводило только курс....

пытался сделать просто вывод в браузер, еще без позиционирования.... дату выдает, а вместо курса - 0.0

Исходник:

#!/usr/bin/perl
$URL = "http://www.rbc.ru/"; # URL with rate
$keyword = "USD г+ ¦L"; # stamp of start line
$fhistory = "rate_history.txt"; # file of rate history
$frate = "rate.txt"; # file of rate
#$add_percent = 2.; # add that percents to rate before saving
$format = "%5.1f"; # format of rate to save
$regexp = "[\\d\\/,]+"; # regular expression to extract date and rate; duplicate any "\"

use LWP::Simple;

$content = get($URL);

@arr = split(/\n/, $content);

$flag = 0;
for (@arr) {
if ($flag == 0) {
if (/$keyword/) {$flag = 1};
} elsif ($flag == 1) {
/>($regexp)</;
# print "Date: $1\n";
$date = $1;
$flag = 2;
} elsif ($flag == 2) {
/>($regexp)</;
# print "Rate: $1\n";
$rate = $1;
$flag = 3;
}
}

$rate =~ s/,/./;

$rate *= (1+$add_percent/100);

$rate = sprintf($format,$rate);

open (OUT, ">>$fhistory");
print OUT "$date\t$rate\n";
close OUT;

open (OUT, ">$frate");
print OUT "$rate";
close OUT;

Чего я сделал (да почти ничего):

#!/usr/bin/perl
$URL = "http://www.rbc.ru/"; # URL with rate
$keyword = "USD г+ ¦L"; # stamp of start line
#$fhistory = "/var/log/rate_history.txt"; # file of rate history
#$frate = "/var/log/rate.txt"; # file of rate
#$add_percent = 2.; # add that percents to rate before saving
$format = "%5.1f"; # format of rate to save
$regexp = "[\\d\\/,]+"; # regular expression to extract date and rate; duplicate any "\"

use LWP::Simple;

$content = get($URL);

@arr = split(/\n/, $content);

$flag = 0;
for (@arr) {
if ($flag == 0) {
if (/$keyword/) {$flag = 1};
} elsif ($flag == 1) {
/>($regexp)</;
print "Date: $1\n";
$date = $1;
$flag = 2;
} elsif ($flag == 2) {
/>($regexp)</;
print "Rate: $1\n";
$rate = $1;
$flag = 3;
}
}

$rate =~ s/,/./;

$rate *= (1+$add_percent/100);

$rate = sprintf($format,$rate);

##open (OUT, ">>$fhistory");
##print OUT "$date\t$rate\n";
##close OUT;

##open (OUT, ">$frate");
##print OUT "$rate";
##close OUT;
print "Content-type: text/html\n";
print "\n";
print "<html><body>";
print "<b>";
print "$rate\n";
print "</b>";
print "</body></html>";

Заранее благодарен.

Старый 17.02.2002, 08:23
Fiksa вне форума Посмотреть профиль Отправить личное сообщение для Fiksa Найти все сообщения от Fiksa
  № 2  
Fiksa

Регистрация: Jun 2000
Адрес: YS
Сообщений: 117
Привет!

А до этого все работало???

Старый 17.02.2002, 17:35
der вне форума Посмотреть профиль Отправить личное сообщение для der Посетить домашнюю страницу der Найти все сообщения от der
  № 3  
der

Регистрация: Nov 2001
Адрес: Казань
Сообщений: 130
Отправить сообщение для der с помощью ICQ Отправить сообщение для der с помощью Yahoo
че-то я не пойму - зачем строку
#$add_percent = 2.
коментировать?

когда потом -
$rate *= (1+$add_percent/100);

Старый 17.02.2002, 20:43
Unholy вне форума Посмотреть профиль Отправить личное сообщение для Unholy Посетить домашнюю страницу Unholy Найти все сообщения от Unholy
  № 4  
Unholy
 
Аватар для Unholy

Регистрация: May 2001
Адрес: Челябинск
Сообщений: 8
Отправить сообщение для Unholy с помощью ICQ
По умолчанию Re: Подскажите - где тут грабли?

2Fiksa: не знаю.... по крайней мере файл не создавало, в него не писало и вообще не работало...

2der: думаешь и это закоментировать? я вообще-то пробовал раскомментировать эту строку, но он как 0.0 выдавал, так и выдает

В общем не знаю.... правда появился другой вариант, но он корявый...

в конце вместо print "$rate\n"; я прописал print "@arr[381]". но оно тогда всю строку выводит, а мне всякие тэги хтмлные, которые курс бакса обрамляют, нафик не нужны..... как их из строки удалить и вывести только курс????

вот такая вот задачка

Старый 17.02.2002, 23:09
DeepDiver вне форума Посмотреть профиль Отправить личное сообщение для DeepDiver Найти все сообщения от DeepDiver
  № 5  
DeepDiver

Регистрация: Oct 2000
Адрес: Подмосковье
Сообщений: 637
Отправить сообщение для DeepDiver с помощью ICQ
Трабл был в регулярных выражениях. Они были настроены немного на другой формат.
Вот исправленная версия:
Код:
#!/usr/bin/perl
$URL = "http://www.rbc.ru/"; # URL with rate 
$keyword = "Нал. USD"; # stamp of start line 
$fhistory = "rate_history.txt"; # file of rate history 
$frate = "rate.txt"; # file of rate 
$add_percent = 2.; # add that percents to rate before saving 
$format = "%5.1f"; # format of rate to save 
$timeregexp = '\d+\:\d+'; # regular expression to extract time;
$rateregexp = '\d+\,\d+'; # regular expression to extract rate;

use LWP::Simple; 

$content = get($URL); 

@arr = split(/\n/, $content); 

$flag = 0; 
for (@arr) { 
 if ($flag == 0) { 
   if (/$keyword/)  $flag = 1;
 } elsif ($flag == 1) { 
   /($timeregexp)/; 
   print "Time: $1\n"; 
   $date = $1; 
   $flag = 2; 
 } elsif ($flag == 2) { 
   /($rateregexp)/; 
   print "Rate: $1\n"; 
   $rate = $1; 
   $flag = 3;
 } 
} 

$rate =~ s/,/./; 

$rate *= (1+$add_percent/100); 

$rate = sprintf($format,$rate); 

open (OUT, ">>$fhistory"); 
print OUT "$date\t$rate\n"; 
close OUT; 

open (OUT, ">$frate"); 
print OUT "$rate"; 
close OUT;
__________________
Не ошибается то, что не работает. (с) Windows

Старый 19.02.2002, 09:35
Unholy вне форума Посмотреть профиль Отправить личное сообщение для Unholy Посетить домашнюю страницу Unholy Найти все сообщения от Unholy
  № 6  
Unholy
 
Аватар для Unholy

Регистрация: May 2001
Адрес: Челябинск
Сообщений: 8
Отправить сообщение для Unholy с помощью ICQ
По умолчанию Re: Подскажите - где тут грабли?

2All: большое спасибо всем, кто откликнулся.

2DeepDiver: А Вам - отдельное спасибо. действительно все работает, только мне нужно было в хтмл все это выводить. Но это уж я сам без проблемов сделал )
Еще раз большое спасибо.

Создать новую тему   Часовой пояс GMT +4, время: 13:20.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 13:20.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.