🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.perl
Article #498

Re: Podświetlenie tekstu w PERLu

#498
From: Piotr Piatkowski
Date: Sun, 10 Aug 1997 14:21
44 lines
2755 bytes
In pl.comp.lang.perl Jaroslaw Strzalkowski <js@galaxy.uci.agh.edu.pl> wrote:
: In pl.comp.lang.perl Adam Twardoch (fidel) <adam.twardoch@euv-frankfurt-o.de> wrote:
: : Drodzy!
: : Sytuacja: PERL. Serwer WWW na stacji Unix. CGI. 
: : Mam dokument HTML i mam pewne wyrażenie. 
: [...opis problemu...]

: : Jak to zrobić w PERLu?

: Popatrz na to poniżej - to jeszcze nie całkiem doszlifowane, ale w zasadzie
: robi to co chcesz - dopieść to sobie tak jak chcesz. Komentarze są chyba
: niepotrzebne - dość banalne to, nieprawdaż?

No to ja - w ramach odwiecznej rywalizacji :-) zrobiłem to troszkę 
prościej. Wcześniej już posłałem do Adama mailem - bo przysłał pytanie też 
do mnie bezpośrednio - ale nie mogę przecież sobie podarować okazji, coby
się publicznie powymądrzać :-> A skoro już się wymądrzać, to co mi 
tam - dodam komentarze (Adam dostał bez komentarzy) :-)

#!/usr/bin/perl
my $file = join "", <>;  # cały plik(i) do $file (coś jakby cat $* >$file)
my $parsed = "";         
while( $file =~ /<[^>]*>|[^<]*/g ) { # bierz albo kolejny tag, albo 
                                     # tekst między tagami
   $_ = $&; # zapisz co zostało dopasowane - dla wygody w $_
   if( /<body.*>/i .. /<\/body.*>/i ) { # Jeżeli było już <body>, ale nie było 
                                        # jeszcze </body>
     s!(font\S*)!<font color="red">$1</font>!gi # dokonaj modyfikacji...
       unless /^</;                             # ...chyba że to jest tag
   }
   $parsed .= $_; # dopisz następny kawałek do zmiennej z wynikiem.
}
print $parsed; # zrobione :-)

Pozostaje pytanie czy moje rozwiązanie jest mniej czy bardziej 
czytelne niż Jarka. Ale IMHO jak trzeba cudzy program zrozumieć, to 
chyba najważniejsze żeby był krótki - bo wtedy do rozumienia jest 
mniej :-)

P.S. To dlatego jestem taki miły i dokładny, że mam właśnie do 
     zrobienia znacznie większy i pilniejszy projekt :-)

-- 
Piotr Piątkowski, Uczelniane Centrum Informatyki, AGH Krakow, POLAND
Technical Details
Message-ID: <5skipk$233$1@galaxy.uci.agh.edu.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!agh.edu.pl!agh.edu.pl!not-for-mail
References: <33EB8701.9797E423@euv-frankfurt-o.de> <5si7cm$7l7$1@galaxy.uci.agh.edu.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!agh.edu.pl!agh.edu.pl!not-for-mail
From: kompas@galaxy.uci.agh.edu.pl (Piotr Piatkowski)
Newsgroups: pl.comp.lang.perl,pl.comp.www
Subject: Re: Podświetlenie tekstu w PERLu
Date: 10 Aug 1997 16:21:40 +0200
Organization: University of Mining & Metallurgy
Lines: 44
Message-ID: <5skipk$233$1@galaxy.uci.agh.edu.pl>
References: <33EB8701.9797E423@euv-frankfurt-o.de> <5si7cm$7l7$1@galaxy.uci.agh.edu.pl>
NNTP-Posting-Host: galaxy.uci.agh.edu.pl
Mime-Version: 1.0
X-Newsreader: TIN [UNIX 1.3 unoff BETA 970307; sun4m SunOS 5.5.1]
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit