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


Автор: Vaneska 17.3.2005, 09:59
Соорудил такой скрипт:
Код

#!/usr/bin/perl -w

use strict;

use Net::POP3;

my $host = shift @ARGV;
my $login= shift @ARGV;
my $pass= shift @ARGV;

my $pop =Net::POP3->new($host) || die $!;
$pop->user($login);
print "В вашем почтовом ящике ", $pop->pass($pass), " сообщений. \n";
$pop->quit;


запускаю с хостами pop.mail.ru, mail.land.ru (другие не пробовал) выдает такую ошибку:
Use of uninitialized value in numeric eq (==) at C:/Perl/lib/Net/POP3.pm line 57.
Bad file descriptor at mail_c.pl line 14.

Я так понял что происходят какие-то непонятные ошибки при создании обьекта, поэтому то и $obj неинициализирована. Но почему???
ведь вроде код верный. Модуль POP3 новый. Специально скачал. в чем причина? smile
Помогите, спасите!

Автор: korob2001 17.3.2005, 11:33
У меня так работает:
Код

#!/usr/bin/perl -w
use strict;
use Net::POP3;
my( $host, $login, $pass ) = ( shift, shift, shift );
my $pop =Net::POP3->new($host) || die $!;
$pop->user($login);
print "У вас ", $pop->pass($pass), " писем. \n";
$pop->quit;

Вызывал так: С:\>perl script.pl pop.telenet.be логин пароль

Автор: Vaneska 17.3.2005, 12:14
Извеняюсь, что потревожил, но я полный чайник. Надо же было забыть в файерволе порты открыть. Бывает же такое.

Все работает на ура smile

Буду дальше скрипт писать..

Автор: Kiber_rat 17.3.2005, 14:30
А зачем так сложно? С тремя shift-ами? Кроме того не понятно из какого массива берутся значения, массив по умолчанию @_ но не @ARGV. Так чуть попроще...
Код

my( $host, $login, $pass ) = @ARGV;

Автор: korob2001 17.3.2005, 14:57
Внутри подпрограммы по умолчанию @_, а вне подпрограммы @ARGV. Но твой вариат действительно проще.

Автор: Kiber_rat 18.3.2005, 20:59
Не знал, серьезно.... Почему то думал что @_ везде умолчательный. Впрочем для удобочитаемости лучше, по моему, явно указывать какой массив используется...

Автор: korob2001 18.3.2005, 21:28
Kiber_rat - это ведь не так сложно запомнить. smile
Но в данном случае, самый актуальный, этот вариант:
Код

my( $host, $login, $pass ) = @ARGV; 

А я просто обожаю стёки smile , но в данном случае они неусметны. smile

Автор: Vaneska 18.3.2005, 23:50
Старая добрая привычка. Обьявляешь переменную - коментируешь. А при таком подходе одна переменная на одной строке.
а вообще Ваш вариант гораздо проще.
И вообще. Я перл приводит меня в неаписуемый восторг smile

Автор: korob2001 19.3.2005, 00:03
Цитата

И вообще. Я перл приводит меня в неаписуемый восторг

Я тебя понимаю. smile

Автор: Shar 24.3.2009, 16:27
Люди помогите!

В Perle не соображаю, но нужно получить почту из ящика с помощью указанного модуля, причем скрипт запускать из командной строки сервера, может готовый класс есть? Приму любую помощь!

Автор: gcc 24.3.2009, 17:49
http://search.cpan.org/search?query=pop3&mode=all

Автор: NuINu 24.3.2009, 20:28
gcc: зря ты так, называй сразу таксу, зачем человека мучаться заставлять.

Автор: tolkien 25.3.2009, 11:44
Если человек в PERL не бум бум, то пусть юзает outlook. 

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