|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Alexei Vi. Baikalov 2:5020/400 11 Jul 2001 10:31:09 To : All Subject : Re: Вытаскивание даты. Hарод подскажите! -------------------------------------------------------------------------------- > Тебе письма надо вытащить или таки даты распечатать? > Сформулируй сначала задачу. Вполне возможно что просто > ничего делать не надо и есть готовое решение. Мне нужно создать массив из писем, идентифицировать каждое письмо по дате и сабджекту и оставить самое свежее письмо с определенным сабджектом. > > #!/usr/bin/perl > > print "Content-type: text/html\n\n"; > > open (FILE,"</var/mail/nobody") || die "$!"; > > @strings = <FILE>; > > И машина уходит в глубокий беспросветный swap через > некоторое время торжественно отбрасывая корку по > причине нехватки пямяти. Мож я что-то и не так делаю, но машина никуда не уходит и более того вполне быстро "отпинывается" от поставленной задачи. > > close FILE; > > $i = -1; > Это что за мистическое чудо? Единственное что я придумал на тот период (думал недолго). > > for $string (@strings) { > > ++$i if ($string =~ > > /^From\s[\w,\-,\.]+\@[\w,\-,\.]+\.\w{2,3}\s[A-Z][a-z]{2}\s{2}\d{1,2}\s\d{2}: > > \d{2}:\d{2}\s\d{4}$/); > Жуть. Что собственно хотелось проверить? '\nFrom ' > однозначно определяют начало письма. А вот тут ты однозначно не прав!!!! В /var/mail/user в "теле" одного письма содержится как минимум две конструкции \nFrom. > > $mail[$i] .= $string; > push @mail, $string; Вот об этом я забыл, спасибо.!!! Это значительно упростит алгоритм. Hужно будет на досуге переписать. > > } > > for $mail (@mail) { > > $maildate = $mail; > > $maildate =~ > > /[A-Z][a-z]{2}\s{2}\d{1,2}\s\d{2}:\d{2}:\d{2}\s\d{4}/m; > > У меня такое подощрение, что эта проверка ничего не делает :-) Вот в этом и проблемма была. Забыл все в скобки взять! ($maildate) = $mail =~ /([A-Z][a-z]{2}\s[A-Z][a-z]{2}\s{2}\d{1,2}\s\d{2}:\d{2}:\d{2}\s\d{4})/m; > Дык ты сам сначала объясни чего именно ты хочешь. Hу я вроде понятно обяснял!? :)) > Если просто напечатать даты - то достаточно сказать Смотри выше! > perl -ane 'print "$F[6]-$F[3]-$F[4]\n" if $F[0] eq "From"' < /var/mail/nobody > безо всяких страшилок на ночь :-) Так жить неинтересно 8-)_) --- ifmail v.2.15dev5 * Origin: Enisey Infosystems (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/9149c3fed880.html, оценка из 5, голосов 10
|