Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Perl не могу понять своих ошибок


Автор: TikiTak 8.4.2012, 09:39
Код

#!/use/bin/perl -w
use strict;
use LWP::Simple;
my $page;
my $url;

open(MYFILE, '<', "site_proxy.txt");
$url=<MYFILE>;
$page=get("$url");
print $page;


почему не работает 

Автор: alezzz 8.4.2012, 10:54
что в site_proxy.txt?

Автор: TikiTak 8.4.2012, 10:56
Цитата(alezzz @ 8.4.2012,  10:54)
что в site_proxy.txt?

урлы сайтов в каждой строке новый урл
Код

http://forum.vingrad.ru






Автор: alezzz 8.4.2012, 11:00
если несколько урлов то нужен цикл, так как сейчас составлена программа должно работать для первого урла

Автор: TikiTak 8.4.2012, 11:06
я понимаю что нужен цикл но и с циклом не работает 
это я без цикла показал так как и в самом деле должно работать для первой ссылки но дело в том что не работает

вот такая вот ошибка :(  почему не понятно

Use of uninitialized value $page in print at C:\perlscript\script.pl line 9, <MYFILE> line 1.

Автор: alezzz 8.4.2012, 11:18
упростите программу:
Код

#!/use/bin/perl -w
use strict;
use LWP::Simple;

print get('http://www.perl.org');

если не работает, проверяйте подключение к интернет, настройки файрвола.

Автор: TikiTak 8.4.2012, 11:25
в том то и прикол что при упрошении программы все работает последний код прекрасно работает

Автор: TikiTak 8.4.2012, 13:00
вопрос решен 
сайт который я пытался открыть часто падал но когда я открывал в браузере он открывался зараза 

Автор: Pfailed 8.4.2012, 14:26
После $url=<MYFILE>; желательно делать $url =~ s/\s+$//;, чтобы убрать перенос строки если он есть.

Автор: krypt3r 9.4.2012, 08:51
Цитата
После $url=<MYFILE>; желательно делать $url =~ s/\s+$//;, чтобы убрать перенос строки если он есть. 

chomp()

Автор: Pfailed 9.4.2012, 11:23
krypt3r, chomp() удаляет с конца строки содержимое $/, т.е. по умолчанию "\n". А в Windows, например, строки принято разделять комбинацией "\r\n".
perldoc -f chomp

Автор: krypt3r 11.4.2012, 06:39
Pfailed, perldoc perlport, ключевое слово "Newlines"

Автор: Pfailed 11.4.2012, 11:03
krypt3r, chomp для кода ТС не сработает, как минимум, в следующем случае:
скрипт запускается в Linux/BSD, файл имеет окончания строк "\r\n"

Дабы не зависить от магических преобразований PerlIO в зависимости от платформы, я предпочитаю в таких случаях использовать оператор замены.

Автор: krypt3r 12.4.2012, 05:58
Pfailed, ваше решение — это костыль. Правильное решение указано в мане — это chomp(). Указание :crlf при открытии файла или в прагме поможет в вашем последнем примере (кстати, сработает и для файлов с концами строки в стиле Unix).

PS. В общем, закругляемся, это оффтопик, тем более ТС решил проблему. Каждый юзает perl по-своему ;)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)