2007-03-01

Qpsmtpd - bojów ciąg dalszy

Już narzekałem, że cały czas siedzę nad wtyczkami do Qpsmtpd pisanymi w Perl-u. Dzisiaj, wyjątkowo, chciałem się podzielić pewnym dość śmiesznym kawałkiem kodu, który spreparowałem ucząc się jak potężnym poleceniem jest "s///".

W dużym skrócie - należało z korespondencji w formacie text/html zrobić text/plain (wiem, że tak nie powinno się czynić... i nic na to nie poradzę). Część podmiany polegała na zamianie wszystkim znanego:
<a href="http://abc.pl">abc</a>
na:
abc[http://abc.pl]

Z pomocą przyszło oczywiście wspomniane polecenie "s///", a konkretniej:
$wiersz =~
s/<[Aa][\W\w\n]*?[Hh][Rr][Ee][Ff]="(.*?)"
[^>]*>([\W\w\n]*?)<\/a>/$2\[$1\]/g;
(niestety całość się nie mieści w linijce w jakiś kulturalny sposób...)
Takim to "prostym" zabiegiem (bardzo wg mnie nieeleganckim, który pewnie ktoś już gdzieś napisał lepiej i czytelniej) otrzymujemy pożądany efekt. Jeżeli byłoby to potrzebne - chętnie służę komentarzem.

Link na deser:
HTML::Entities - biblioteka Perl-a bardzo przydatna przy walce z wiatrakami... znaczy się, chciałem powiedzieć, z korespondencją formatowaną w HTML-u.
(#_-)

Brak komentarzy: