The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"ошибка в скрипте"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Perl)
Изначальное сообщение [ Отслеживать ]

"ошибка в скрипте"  +/
Сообщение от Vasya_john on 10-Дек-13, 06:17 
Ребята, всем привет.

Мне тут знакомый програмист написал програмку, она у меня уже пару месяцев нормально работала, а сейчас выдает ошибку:


Use of uninitialized value $jpy_html in pattern match (m//) at parser.pl line 33.
Use of uninitialized value $jpy_html in substitution (s///) at parser.pl line 35.
Use of uninitialized value $jpy_html in substitution (s///) at parser.pl line 36.
Use of uninitialized value $jpy_html in pattern match (m//) at parser.pl line 37.
Use of uninitialized value $1 in multiplication (*) at parser.pl line 38.
Курс иены на сегодня: 0.000000

по-идее должен выдавать текущий курс йены, но начал выдавать 0.00000

в самом скрипте на строках с 28 по 40 идет следующее:


my@formula    =(1.05, 1500, 1.05, [1.20, 1.053]); # ФОРМУЛА

my$jpy_url = 'http://www.cbr.ru/scripts/XML_daily.asp';
my$jpy_html = get($jpy_url);
utf8::encode($jpy_html);
$jpy_html =~ m|<Valute ID="R01820">(.+?)</Valute>|s;
$jpy_html = $1;
$jpy_html =~ s|\s+||g;
$jpy_html =~ s|\,|.|g;
$jpy_html =~ m|<Value>(.+?)</Value>|;
push @formula, $1 * 1.04 / 100;

printf "Курс иены на сегодня: %0.6f\n", $formula[-1];


Подскажите пожалуйста, что где нужно изменить, чтобы заработало снова.
Я не программист и сделать ничего не смогу кроме того, что скопирую то, что вы напишите и вставлю туда, куда скажете.

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

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "ошибка в скрипте"  +/
Сообщение от PavelR (ok) on 10-Дек-13, 06:47 
>[оверквотинг удален]
> $jpy_html = $1;
> $jpy_html =~ s|\s+||g;
> $jpy_html =~ s|\,|.|g;
> $jpy_html =~ m|<Value>(.+?)</Value>|;
> push @formula, $1 * 1.04 / 100;
> printf "Курс иены на сегодня: %0.6f\n", $formula[-1];
> Подскажите пожалуйста, что где нужно изменить, чтобы заработало снова.
> Я не программист и сделать ничего не смогу кроме того, что скопирую
> то, что вы напишите и вставлю туда, куда скажете.
> Заранее благодарен.

Строчку

> $jpy_html =~ m|<Valute ID="R01820">(.+?)</Valute>|s;

заменить на

$jpy_html =~ /<Valute ID="R01820">.*?<Value>\s*(.+?)\s*<\/Value>.*?<\/Valute>/ims;

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "ошибка в скрипте"  +/
Сообщение от Vasya_john on 10-Дек-13, 07:00 
>[оверквотинг удален]
>> push @formula, $1 * 1.04 / 100;
>> printf "Курс иены на сегодня: %0.6f\n", $formula[-1];
>> Подскажите пожалуйста, что где нужно изменить, чтобы заработало снова.
>> Я не программист и сделать ничего не смогу кроме того, что скопирую
>> то, что вы напишите и вставлю туда, куда скажете.
>> Заранее благодарен.
> Строчку
>> $jpy_html =~ m|<Valute ID="R01820">(.+?)</Valute>|s;
> заменить на
> $jpy_html =~ /<Valute ID="R01820">.*?<Value>\s*(.+?)\s*<\/Value>.*?<\/Valute>/ims;

не работает :(


Use of uninitialized value $jpy_html in substitution (s///) at parser.pl line 34.
Use of uninitialized value $jpy_html in substitution (s///) at parser.pl line 35.
Use of uninitialized value $jpy_html in pattern match (m//) at parser.pl line 36.
Use of uninitialized value $1 in multiplication (*) at parser.pl line 37.
Курс иены на сегодня: 0.000000

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

4. "ошибка в скрипте"  +/
Сообщение от PavelR (ok) on 10-Дек-13, 09:07 
>[оверквотинг удален]
>>> $jpy_html =~ m|<Valute ID="R01820">(.+?)</Valute>|s;
>> заменить на
>> $jpy_html =~ /<Valute ID="R01820">.*?<Value>\s*(.+?)\s*<\/Value>.*?<\/Valute>/ims;
> не работает :(
> Use of uninitialized value $jpy_html in substitution (s///) at parser.pl line 34.
> Use of uninitialized value $jpy_html in substitution (s///) at parser.pl line 35.
> Use of uninitialized value $jpy_html in pattern match (m//) at parser.pl line
> 36.
> Use of uninitialized value $1 in multiplication (*) at parser.pl line 37.
> Курс иены на сегодня: 0.000000

добавляем

warn $jpy_html;

перед замененной строчкой.
Запускаем, смотрим вывод.

Если <Valute ID="R01820"> отличается от

<Valute ID="R01820">
<NumCode>
392
</NumCode>
<CharCode>
JPY
</CharCode>
<Nominal>
100
</Nominal>
<Name>
Японских иен
</Name>
<Value>
31,7973
</Value>
</Valute>

То ищем фрилансера для выполнения для вас этой работы.

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

3. "ошибка в скрипте"  +/
Сообщение от Etch on 10-Дек-13, 09:06 
> my@formula =(1.05, 1500, 1.05, [1.20, 1.053]); # ФОРМУЛА
> my$jpy_url = 'http://www.cbr.ru/scripts/XML_daily.asp';
> my$jpy_html = get($jpy_url);

В скрипте так и написано без пробелов после 'my'? Если да, то надо вставить пробел: 'my '.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

5. "ошибка в скрипте"  +/
Сообщение от PavelR (ok) on 10-Дек-13, 09:07 
>> my@formula =(1.05, 1500, 1.05, [1.20, 1.053]); # ФОРМУЛА
>> my$jpy_url = 'http://www.cbr.ru/scripts/XML_daily.asp';
>> my$jpy_html = get($jpy_url);
> В скрипте так и написано без пробелов после 'my'? Если да, то
> надо вставить пробел: 'my '.

если бы в скрипте было так написано, то ругалось бы слегка по-другому, IMHO.

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

6. "ошибка в скрипте"  +/
Сообщение от Andrey (??) on 10-Дек-13, 11:17 
Сборище программистов экстрасенсов?
Начнем с того что если ваш скрипт парсит сайт и "раньше все работало" а потом вдруг перестало работать, ЗНАЧИТ ПОМЕНЯЛСЯ КОНТЕНТ САЙТА.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

8. "ошибка в скрипте"  +/
Сообщение от PavelR (ok) on 10-Дек-13, 18:41 
> Сборище программистов экстрасенсов?

Добро пожаловать.

> Начнем с того что если ваш скрипт парсит сайт и "раньше все
> работало" а потом вдруг перестало работать, ЗНАЧИТ ПОМЕНЯЛСЯ КОНТЕНТ САЙТА.

Поздравляем вас с присвоением внеочередного звания.

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

7. "ошибка в скрипте"  –1 +/
Сообщение от михалыч (ok) on 10-Дек-13, 17:12 
Да всё у вас правильно.
Можно, конечно, заменить. И вставить. ))

Это:

my@formula    =(1.05, 1500, 1.05, [1.20, 1.053]); # ФОРМУЛА

my$jpy_url = 'http://www.cbr.ru/scripts/XML_daily.asp';
my$jpy_html = get($jpy_url);
utf8::encode($jpy_html);
$jpy_html =~ m|<Valute ID="R01820">(.+?)</Valute>|s;
$jpy_html = $1;
$jpy_html =~ s|\s+||g;
$jpy_html =~ s|\,|.|g;
$jpy_html =~ m|<Value>(.+?)</Value>|;
push @formula, $1 * 1.04 / 100;

printf "Курс иены на сегодня: %0.6f\n", $formula[-1];

На это:

my@formula    =(1.05, 1500, 1.05, [1.20, 1.053]); # ФОРМУЛА

my$jpy_url = 'http://www.cbr.ru/scripts/XML_daily.asp';
my$jpy_html = get($jpy_url);
utf8::encode($jpy_html);
$jpy_html =~ s/.*R01820.*>(\d+,\d+).*/$1/;
$jpy_html =~ s|\,|.|g;
push @formula, $jpy_htm * 1.04 / 100;

printf "Курс иены на сегодня: %0.6f\n", $formula[-1];


Но это ничего не изменит. (не надо ничего менять)))

Проблема здесь => my$jpy_html = get($jpy_url);
Здесь написано, что вы получаете страничку с курсом валют.
А получить (скачать?) не можете.
Канал упал или лимит/деньги кончились?

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

9. "ошибка в скрипте"  +/
Сообщение от PavelR (ok) on 10-Дек-13, 18:42 
> Проблема здесь => my$jpy_html = get($jpy_url);
> Здесь написано, что вы получаете страничку с курсом валют.
> А получить (скачать?) не можете.
> Канал упал или лимит/деньги кончились?

Михалыч, сходи экстрасенсорику прокачай.
Ссылку слабо было ткнуть, чтобы увидеть формат данных?


Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

10. "ошибка в скрипте"  +/
Сообщение от михалыч (ok) on 10-Дек-13, 18:46 
>> Проблема здесь => my$jpy_html = get($jpy_url);
>> Здесь написано, что вы получаете страничку с курсом валют.
>> А получить (скачать?) не можете.
>> Канал упал или лимит/деньги кончились?
> Михалыч, сходи экстрасенсорику прокачай.
> Ссылку слабо было ткнуть, чтобы увидеть формат данных?

Уже. Хм.. а что там особенного? Ну xml, ну и что?

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

11. "ошибка в скрипте"  +/
Сообщение от михалыч (ok) on 10-Дек-13, 20:18 
> Михалыч, сходи экстрасенсорику прокачай.
> Ссылку слабо было ткнуть, чтобы увидеть формат данных?

Глаза разуй! Советчик-минусовщик..

Не видишь, что-ли, КАК "разбирается" XML файл?
ЧТО вызывается? А вот что $jpy_html = get($jpy_url);
И несложно предположить, что там типа такого

while(<FH>){
    chomp;
    s/^\s+//;
    s/\s+$//;
}

То есть склеивает всё в одну строку, а потом режет её и кромсает вдоль и поперёк, выхватывая что ему надо.
Классическим разбором XML тут даже и не пахнет.

Так что себе, пару минусов влепи.

Скорее всего, задёргал вызов/получение xml (а на сервере, возможно ограничение на частоту) и обломился его скрипт.

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру