okxjd |
|
Темы:
2
Сообщения:
14
Участник с: 31 мая 2009
|
Здравствуйте, у меня такая проблема: интернет-провайдер требует использования программы-авторизатора. Авторизатор написан на perl, и прекрасно работает в других дистрибутивах. А в Arch (i686, 2009.02-core) выдает сообщение “не могу вызвать метод opened неопределенного объекта $h в строке 84” (это вольный перевод). Вот часть кода авторизатора: #!/usr/bin/perl -w # #use strict; use IO::Socket (); use Digest::MD5 (); use vars qw(%secret); $| = 1; my $PORT = 8899; my $MIN_CHALLENGE_LENGTH = 32; my $MAX_CHALLENGE_LENGTH = 64; if ($#ARGV < 2 or ($ARGV[1] ne "1" and $ARGV[1] ne "2")) { print "Usage: $0 password accesslevel gatewayaddress\n"; print " where access level is 1 or 2 -- internal and external traffic.\n"; die; } my $PASS = $ARGV[0]; my $ACCLEV = $ARGV[1]; my $GWADDR = $ARGV[2]; my $proto = ""; my $h = IO::Socket::INET->new('PeerAddr' => $GWADDR, 'PeerPort' => $PORT); &read_handle(\$proto, 1); ... ... sub read_handle { my($ref, $len) = @_; die "Socket closed.\n" if !$h->opened; ####### вот та строка, где появляется ошибка my $recvlen = sysread($h, ${$ref}, $len); die "Error reading socket.\n" if !defined($recvlen) or $recvlen != $len; } perl /usr/bin/auth_client.pl 'пароль' 2 'ip-адрес' & При установке арча видел предупреждение, что структура каталогов perl была изменена, и какие-то команды приводились - может это быть причиной? Может быть модули какие-то найти не может? PS. В perl я практически полный ноль, с арчем раньше не сталкивался |
tchgefest |
|
Темы:
51
Сообщения:
1505
Участник с: 20 октября 2008
|
Может попробовать поискать yaourt -Ss IO::Socket::INET Посмотреть установлен ли модуль этот И посмотрите что выдает perl -c ваш_файл.pl
Последний крик моды - эхо 30-летней давности.
|
okxjd |
|
Темы:
2
Сообщения:
14
Участник с: 31 мая 2009
|
perl -c ваш_файл.pl пишет, что ошибок нет. А что это за команда - yaourt? У меня такой нет. Поискал на диске, в каталоге /usr/share/perl5/.. есть папка IO, в ней только один файл Z***.pm, ничего похожего на Socket там нет - это оно? Мне нужно ,значит, модуль Socket поставить? |
exorcist |
|
Темы:
0
Сообщения:
26
Участник с: 24 мая 2008
|
в aur ищи perl-io-socket-inet6 2.56-2 и perl-digest-md5 1.8-1 |
okxjd |
|
Темы:
2
Сообщения:
14
Участник с: 31 мая 2009
|
Спасибо, пока через vpn хожу. Теперь хотя бы не перегружаюсь каждый раз. Этот вопрос можно закрыть, дальше, думаю, сам разберусь. |