🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.perl
9 messages
9 total messages Started by jankes Thu, 15 Jul 2010 11:19
POP3Client za pomocą odczytanych z pliku namiarów
#51952
Author: jankes
Date: Thu, 15 Jul 2010 11:19
56 lines
2749 bytes
Witam, mam taki chyba dość dziwny przypadek:

#! /usr/bin/perl

use strict;
use warnings;
use Mail::POP3Client;
use Mail::MboxParser::Mail;

my $dir = "/usr/im/";

# NIE DZIAŁA
$/ = ";";
open NAM, "email_info.txt" or die $!;
my @namiary = <NAM>;
my ($smtp_host, $pop_host, $user, $pass) = @namiary;
chop $smtp_host; chop $pop_host; chop $user;
close NAM;

# DZIAŁA
#my $smtp_host = 'smtp.pl';
#my $pop_host = 'pop3.pl';
#my $user = 'user';
#my $pass = 'password';

print "$smtp_host, $pop_host, $user, $pass;\n";
odbierz_email($dir);

sub odbierz_email
{
my $pop = new Mail::POP3Client (USER     => $user,
                                PASSWORD => $pass,
                                HOST     => $pop_host);

for my $i (1 .. $pop->Count)
{
    my $msg = Mail::MboxParser::Mail->new( [ $pop->Head($i) ],
                                           [ $pop->Body($i) ]);
    $msg->store_all_attachments( path => $_[0] );
    $pop->Delete($i);
}
$pop->Close();
}

Plik w którym znajdują się namiary na serwer POP zawiera te informacje
rozdzielone ; i są poprawne :) Zmienne przypisują się poprawnie, print
"$smtp_host, $pop_host, $user, $pass;\n"; to potwierdza. Jednak
połączenie z ich użyciem jest niemożliwe, dostaję błąd:

Use of uninitialized value in pattern match (m//) at /usr/lib/perl5/
site_perl/5.8.8/Mail/POP3Client.pm line 1029, <GEN0> chunk 1.

Z bezpośrednim przypisaniem zmiennych działa bez problemu. Co może być
przyczyną ?

Dzięki, pozdrowienia.
Re: POP3Client za pomocą odczytanych z pliku namiarów
#51953
Author: Adam Osuchowski
Date: Thu, 15 Jul 2010 11:30
4 lines
1013 bytes
jankes wrote:
> chop $smtp_host; chop $pop_host; chop $user;

A nie zapomniałeś tutaj usunąć też znaku końca linii z $pass?
Re: POP3Client za pomocą odczytanych z pliku namiarów
#51954
Author: jankes
Date: Thu, 15 Jul 2010 11:50
11 lines
1643 bytes
On 15 Lip, 13:30, Adam Osuchowski <some...@somewhere.com> wrote:
> jankes wrote:
> > chop $smtp_host; chop $pop_host; chop $user;
>
> A nie zapomniałeś tutaj usunąć też znaku końca linii z $pass?

Niestety nie :) plik wygląda tak :

smtp.pl;pop3.pl;user;password

po haśle nie ma już średnika.
Re: POP3Client za pomocą odczytanych z pliku namiarów
#51910
Author: Adam Osuchowski
Date: Thu, 15 Jul 2010 11:54
8 lines
1168 bytes
jankes wrote:
> Niestety nie :) plik wygląda tak :
> 
> smtp.pl;pop3.pl;user;password
> 
> po haśle nie ma już średnika.

Nie mówię o średniku tylko o znaku końca linii LF (\n) albo CRLF (\r\n).
Re: POP3Client za pomocą odczytanych z pliku namiarów
#51956
Author: jankes
Date: Thu, 15 Jul 2010 12:10
11 lines
1777 bytes
On 15 Lip, 13:54, Adam Osuchowski <some...@somewhere.com> wrote:
> jankes wrote:
> > Niestety nie :) plik wygląda tak :
>
> > smtp.pl;pop3.pl;user;password
>
> > po haśle nie ma już średnika.
>
> Nie mówię o średniku tylko o znaku końca linii LF (\n) albo CRLF (\r\n).

ale tym : $/ = ";"; zmieniam znak końca linii na średnik właśnie.
Re: POP3Client za pomocą odczytanych z pliku namiarów
#51959
Author: Tomasz "rocku" K.
Date: Thu, 15 Jul 2010 13:04
69 lines
2915 bytes
W dniu 15.07.2010 13:19, jankes pisze:
> Witam, mam taki chyba dość dziwny przypadek:
>
> #! /usr/bin/perl
>
> use strict;
> use warnings;
> use Mail::POP3Client;
> use Mail::MboxParser::Mail;
>
> my $dir = "/usr/im/";
>
> # NIE DZIAŁA
> $/ = ";";
> open NAM, "email_info.txt" or die $!;
> my @namiary =<NAM>;
> my ($smtp_host, $pop_host, $user, $pass) = @namiary;
> chop $smtp_host; chop $pop_host; chop $user;
> close NAM;

Nie prościej tak (pomijając $/):

open NAM, "email_info.txt" or die $!;
chomp(my $namiary = <NAM>);
my ($smtp_host, $pop_host, $user, $pass) = split /;/, $namiary;
close NAM;

> # DZIAŁA
> #my $smtp_host = 'smtp.pl';
> #my $pop_host = 'pop3.pl';
> #my $user = 'user';
> #my $pass = 'password';
>
> print "$smtp_host, $pop_host, $user, $pass;\n";
> odbierz_email($dir);
>
> sub odbierz_email
> {
> my $pop = new Mail::POP3Client (USER     =>  $user,
>                                  PASSWORD =>  $pass,
>                                  HOST     =>  $pop_host);
>
> for my $i (1 .. $pop->Count)
> {
>      my $msg = Mail::MboxParser::Mail->new( [ $pop->Head($i) ],
>                                             [ $pop->Body($i) ]);
>      $msg->store_all_attachments( path =>  $_[0] );
>      $pop->Delete($i);
> }
> $pop->Close();
> }
>
> Plik w którym znajdują się namiary na serwer POP zawiera te informacje
> rozdzielone ; i są poprawne :) Zmienne przypisują się poprawnie, print
> "$smtp_host, $pop_host, $user, $pass;\n"; to potwierdza. Jednak
> połączenie z ich użyciem jest niemożliwe, dostaję błąd:
>
> Use of uninitialized value in pattern match (m//) at /usr/lib/perl5/
> site_perl/5.8.8/Mail/POP3Client.pm line 1029,<GEN0>  chunk 1.
>
> Z bezpośrednim przypisaniem zmiennych działa bez problemu. Co może być
> przyczyną ?
>
> Dzięki, pozdrowienia.


-- 
Pozdrawiam,
Tomasz "rocku" K.
Re: POP3Client za pomocą odczytanych z pliku namiarów
#51957
Author: Adam Osuchowski
Date: Thu, 15 Jul 2010 13:19
5 lines
1288 bytes
jankes wrote:
> ale tym : $/ = ";"; zmieniam znak końca linii na średnik właśnie.

I napewno na końcu tego pliku (ostatni bajt) nie ma znaku LF?
Polecenie "wc -l" daje wartość 0 na tym pliku?
Re: POP3Client za pomocą odczytanych z pliku namiarów
#51960
Author: jankes
Date: Thu, 15 Jul 2010 13:41
82 lines
3682 bytes
On 15 Lip, 15:04, "Tomasz \"rocku\" K." <ro...@no.spam> wrote:
> W dniu 15.07.2010 13:19, jankes pisze:
>
>
>
>
>
> > Witam, mam taki chyba dość dziwny przypadek:
>
> > #! /usr/bin/perl
>
> > use strict;
> > use warnings;
> > use Mail::POP3Client;
> > use Mail::MboxParser::Mail;
>
> > my $dir = "/usr/im/";
>
> > # NIE DZIAŁA
> > $/ = ";";
> > open NAM, "email_info.txt" or die $!;
> > my @namiary =<NAM>;
> > my ($smtp_host, $pop_host, $user, $pass) = @namiary;
> > chop $smtp_host; chop $pop_host; chop $user;
> > close NAM;
>
> Nie prościej tak (pomijając $/):
>
> open NAM, "email_info.txt" or die $!;
> chomp(my $namiary = <NAM>);
> my ($smtp_host, $pop_host, $user, $pass) = split /;/, $namiary;
> close NAM;
>
>
>
>
>
> > # DZIAŁA
> > #my $smtp_host = 'smtp.pl';
> > #my $pop_host = 'pop3.pl';
> > #my $user = 'user';
> > #my $pass = 'password';
>
> > print "$smtp_host, $pop_host, $user, $pass;\n";
> > odbierz_email($dir);
>
> > sub odbierz_email
> > {
> > my $pop = new Mail::POP3Client (USER     =>  $user,
> >                                  PASSWORD =>  $pass,
> >                                  HOST     =>  $pop_host);
>
> > for my $i (1 .. $pop->Count)
> > {
> >      my $msg = Mail::MboxParser::Mail->new( [ $pop->Head($i) ],
> >                                             [ $pop->Body($i) ]);
> >      $msg->store_all_attachments( path =>  $_[0] );
> >      $pop->Delete($i);
> > }
> > $pop->Close();
> > }
>
> > Plik w którym znajdują się namiary na serwer POP zawiera te informacje
> > rozdzielone ; i są poprawne :) Zmienne przypisują się poprawnie, print
> > "$smtp_host, $pop_host, $user, $pass;\n"; to potwierdza. Jednak
> > połączenie z ich użyciem jest niemożliwe, dostaję błąd:
>
> > Use of uninitialized value in pattern match (m//) at /usr/lib/perl5/
> > site_perl/5.8.8/Mail/POP3Client.pm line 1029,<GEN0>  chunk 1.
>
> > Z bezpośrednim przypisaniem zmiennych działa bez problemu. Co może być
> > przyczyną ?
>
> > Dzięki, pozdrowienia.
>
> --
> Pozdrawiam,
> Tomasz "rocku" K.

Wygląda na to, że działa :)

Dzięki, pozdrowienia.
Re: POP3Client za pomocą odczytanych z pliku namiarów
#51958
Author: jankes
Date: Thu, 15 Jul 2010 13:43
8 lines
1911 bytes
On 15 Lip, 15:19, Adam Osuchowski <some...@somewhere.com> wrote:
> jankes wrote:
> > ale tym : $/ = ";"; zmieniam znak końca linii na średnik właśnie.
>
> I napewno na końcu tego pliku (ostatni bajt) nie ma znaku LF?
> Polecenie "wc -l" daje wartość 0 na tym pliku?

Tak jest, wartość 0.
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads