Article View: pl.comp.lang.perl
Article #498Re: Podświetlenie tekstu w PERLu
From: Piotr Piatkowski
Date: Sun, 10 Aug 1997 14:21
Date: Sun, 10 Aug 1997 14:21
44 lines
2755 bytes
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-mailReferences:
<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