sub etsikorvaa_data{#sisään muuttuja, jossa kohtia data(jotain). Nämä korvataan arvolla $data{'jotain'} ja palautetaan koko muuttuja local($a)=@_; $a =~ s/data\((.+?)\)/$data{$1}/esg; return($a) } sub etsikorvaa_form{#sisään muuttuja, jossa kohtia form(jotain). Nämä korvataan arvolla $form{'jotain'} ja palautetaan koko muuttuja local($a)=@_; $a =~ s/form\((.+?)\)/$FORM{$1}/esg; return($a) } sub etsikorvaa_virhe{ #sisään rivi tai monirivinen muuttuja, ulos virhe(jotain) korvattuna $virhemerkki llä my($a)=@_; $virhemerkki = "!" unless $virhemerkki; $a =~ s/virhe\((.+?)\)/$virhe{$1}/esg; return($a) } sub etsikorvaa_sub{#tämä rutiini ajaa muuttujaan (yleensä html-templateen) kirjoitettuja rutiineja, jotka on merkitty kolmella alaviivalla ___ #Esim. sisään tulevaan muuttujaan sisältyy teksti ___jotain(1,2) ja perl skriptissä rutiini sub jotain #tällöin ___jotain(1,2) vaihdetaan arvoksi, jonka sub jotain palauttaa muuttujilla 1,2. Sulut oltava vaikka rutiinille meneviä arvoja ei olisikaan. my($html)=@_; my($sub); while ($a=~/___([a-zA-Z0-9_-]+?)\((.*?)\)/){ #etsitään rivistä kohta ___jotain(jotain) $sub=$1; #alirutiinin nimi @rutiinille = split(/,/,$2); $a =~ s/___.+?\)/&$sub(@rutiinille)/es; #laitetaan tilalle alirutiinin palauttama arvo } return($a); } sub poista_tagit{ #rivinvaihdot, www. email my ($muunnettava) = @_; $muunnettava =~ s/\n//sg;# poista ensin kaikki rivinvaihdot $muunnettava =~ s/

/\n\n/sg; #kappalevälit kahdeksi rivivaihdoksi $muunnettava =~ s/
/\n/sg; #rivivaihdot yhdeksi rivivaihdoksi $muunnettava =~ s/(.*?)<\/a>/\1/sg;#linkit paljaiksi osoitteiksi $muunnettava =~ s/(.*?)<\/a>/\1/sg;#mailto linkit samoin return($muunnettava); } sub laita_tagit{ #rivinvaihdot, www, email my ($muunnettava) = @_; $muunnettava =~ s/(\s*)$/ /s;# loppuun yksi välilyönti linkkimuunnoksia varten $muunnettava =~ s|(http://.+?)(\W*\s)|\1\2|sg; $muunnettava =~ s&(\s|\A)(www\..*?)(\W*\s)&\1\2\3&sg; $muunnettava =~ s/([-\.\w]+@[-\.\w]+?)(\W*\s)/\1<\/a>\2/sg; $muunnettava =~ s/\n\s*?\n/

/sg; #tuplarivinvaihdot

-tagiksi $muunnettava =~ s/\n/
/sg; #rivinvaihdot
-tagiksi $muunnettava =~ s/\s+/ /sg;#varmuudeksi vielä kaikki rivinvaihdot ja pitkät välit pois chomp($muunnettava); return($muunnettava); } 1;