![]() |
|
||||||||||
|
|||||
|
Я в перле почти никак, но надо сделать....
Имеется файло 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>"; Заранее благодарен. |
|
|||||
|
Регистрация: Jun 2000
Адрес: YS
Сообщений: 117
|
Привет!
А до этого все работало??? |
|
|||||
|
че-то я не пойму - зачем строку
#$add_percent = 2. коментировать? когда потом - $rate *= (1+$add_percent/100); |
|
|||||
|
2Fiksa: не знаю.... по крайней мере файл не создавало, в него не писало и вообще не работало...
2der: думаешь и это закоментировать? я вообще-то пробовал раскомментировать эту строку, но он как 0.0 выдавал, так и выдает ![]() В общем не знаю.... правда появился другой вариант, но он корявый... в конце вместо print "$rate\n"; я прописал print "@arr[381]". но оно тогда всю строку выводит, а мне всякие тэги хтмлные, которые курс бакса обрамляют, нафик не нужны..... как их из строки удалить и вывести только курс???? ![]() вот такая вот задачка ![]() |
|
|||||
|
Трабл был в регулярных выражениях. Они были настроены немного на другой формат.
Вот исправленная версия: #!/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 |
|
|||||
|
2All: большое спасибо всем, кто откликнулся.
2DeepDiver: А Вам - отдельное спасибо. действительно все работает, только мне нужно было в хтмл все это выводить. Но это уж я сам без проблемов сделал )Еще раз большое спасибо. |
![]() |
Часовой пояс GMT +4, время: 21:03. |
|
|
« Предыдущая тема | Следующая тема » |
|
|