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/ /sg; #tuplarivinvaihdot -tagiksi
$muunnettava =~ s/\n/
/\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; #rivinvaihdot
-tagiksi
$muunnettava =~ s/\s+/ /sg;#varmuudeksi vielä kaikki rivinvaihdot ja pitkät välit pois
chomp($muunnettava);
return($muunnettava);
}
1;