ΠΡΠ»ΠΈΡΠ½ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ CGI Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π²ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΎΡΠΎΡΠΌΠ»Π΅Π½Π½ΡΡ web-ΡΡΡΠ°Π½ΠΈΡ. ΠΠ½ΠΈ ΡΠΊΡΡΠ²Π°ΡΡ ΠΎΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ° ΡΡΡΠ΄Π½ΠΎΡΡΠΈ ΠΈ ΡΠΎΠ½ΠΊΠΎΡΡΠΈ ΠΏΡΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ Π΄Π°Π½Π½ΡΡ ΡΠΎΡΠΌ. Web-ΡΡΡΠ°Π½ΠΈΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠΊΠΈ Π½Π° ΡΠ·ΡΠΊΠ΅ HTML. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° CGI ΡΠ°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΡΠΎ Π²ΡΠ΅ΠΌΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΌΠΈ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ HTTP-Π·Π°ΠΏΡΠΎΡΠΎΠ² Π² CGI-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ .
ΠΠ°Π»ΡΠ½Π΅ΠΉΡΠΈΠΌ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ΠΌ CGI ΡΡΠ°Π»ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΠ΅ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, Π² ΠΊΠΎΡΠΎΡΡΡ Π² ΡΠ°Π±Π»ΠΎΠ½ HTML-Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° Π²ΠΊΠ»ΡΡΠ°ΡΡΡΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠ΅ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΡ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π½Π° Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΌ ΡΠ·ΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ - C#, Java, PHP, Perl, Visual Basic ΠΈΠ»ΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΠ·ΡΠΊΠ°Ρ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ². ΠΠ° Perl Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ Π½Π΅ΠΌΠ°Π»ΠΎ ΡΠΈΡΡΠ΅ΠΌ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ°Π±Π»ΠΎΠ½Π°ΠΌΠΈ (templating system): ΠΎΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ Π½Π΅ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΡ, Π΄ΠΎ ΠΈΠ·ΠΎΡΡΠ΅Π½Π½ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ (application framework) Π΄Π»Ρ web-ΡΠ΅ΡΠ²Π΅ΡΠ°. Perl Π² ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, HTML::Template, Text::Template, Template Toolkit) ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ². ΠΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Apache::ASP, AxKit, Embperl, Mason, Apache::XPP) Perl ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ ΡΠ·ΡΠΊ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ Π² ΡΠ°Π±Π»ΠΎΠ½Π°Ρ . ΠΡΠ΅ ΡΡΠΈ ΡΠΈΡΡΠ΅ΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³ΡΡΠ·ΠΈΡΡ Ρ ΡΠ°ΠΉΡΠ° CPAN ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΎΠ±ΡΡΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ. (ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎΠ± ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΡΠ΅ΡΡ ΡΠ»Π° Π² Π»Π΅ΠΊΡΠΈΠΈ 13.) ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΡΠΈΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ ΠΏΠΎΠ΄ ΠΠ‘ MS Windows ΠΏΡΠΎΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π·Π°Π³ΡΡΠ·ΠΈΡΡ Ρ ΡΠ°ΠΉΡΠ° perl.apache.org Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ² Perl, Π² ΡΠΎΡΡΠ°Π² ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²Ρ ΠΎΠ΄ΠΈΡ ΡΠ΅ΡΠ²Π΅Ρ Apache Ρ mod_perl ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ. ΠΠ°ΠΆΠ΄Π°Ρ ΠΈΠ· ΡΠΈΡΡΠ΅ΠΌ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΈ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΌΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ, Π½ΠΎ ΠΌΡ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΠΌΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ Π½Π° ΡΠΎΠΉ ΠΈΠ· Π½ΠΈΡ , ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΡΠΎΡ ΠΆΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄, ΡΡΠΎ ΠΈ Π² Π΄ΡΡΠ³ΠΈΡ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ²: ASP, JSP ΠΈ PHP.
Π‘ΠΈΡΡΠ΅ΠΌΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ web-ΡΠ°ΠΉΡΠΎΠ² Apache::ASP ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΊΡΠΎΡΡ-ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π°, Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΌ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ActiveState PerlScript Π΄Π»Ρ web-ΡΠ΅ΡΠ²Π΅ΡΠ° Microsoft IIS. Π ΡΡΠΎΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π΅ ΡΠΎΡΠ΅ΡΠ°ΡΡΡΡ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ HTML-Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΎΠ³Π°ΡΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π ΡΠ°Π±Π»ΠΎΠ½Π΅ HTML-ΡΡΡΠ°Π½ΠΈΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅Π³Π°ΠΌΠΈ <% ΠΈ %> ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΡΠ·ΡΠΊΠ΅ Perl, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ Π·Π°ΠΏΡΠΎΡΠ° Π½Π° ΡΡΡΠ°Π½ΠΈΡΡ. Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠΈΡ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΎΠ² Π²ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΡΡ ΡΡΡΠ°Π½ΠΈΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΡΡΡΠ»Π°Π΅ΡΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡ. ΠΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΈΠΌΠ΅Ρ Ρ Π³ΠΎΡΡΠ΅Π²ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΎΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΊΠ»Π°ΡΡΡ ΠΈΠ· ΡΠΎΡΡΠ°Π²Π° Apache::ASP, ΡΠΎ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ:
<html> <head> <!-- ΡΠ°ΠΏΠΊΠ° HTML-ΡΡΡΠ°Π½ΠΈΡΡ --> <meta http-equiv="content-type" content="text/html; charset=windows-1251"> <title>ΠΠΎΡΡΠ΅Π²Π°Ρ ΠΊΠ½ΠΈΠ³Π°</title> </head> <body> <!-- ΡΠ΅Π»ΠΎ HTML-ΡΡΡΠ°Π½ΠΈΡΡ --> <h3>ΠΠ΄Π΅ΡΡ ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠ²ΠΎΠΉ ΠΎΡΠ·ΡΠ²</h3> <form method="POST"> <!-- Π½Π°ΡΠ°Π»ΠΎ HTML-ΡΠΎΡΠΌΡ --> <br/>ΠΠΌΡ: <!-- 1-Π΅ ΠΏΠΎΠ»Π΅ ΡΠΎΡΠΌΡ --> <input name="nick" type="text" size="8" value="<%=$Request->Form('nick')%>"/> <br/>Π-ΠΏΠΎΡΡΠ°: <!-- 2-Π΅ ΠΏΠΎΠ»Π΅ ΡΠΎΡΠΌΡ --> <input name="email" type="text" size="32" value="<%=$Request->Form('email')%>"/> <br/>ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ:<br/> <!-- 3-Π΅ ΠΏΠΎΠ»Π΅ ΡΠΎΡΠΌΡ --> <textarea name="comments" rows="5" cols="50"> <%=$Request->Form('comments')%> </textarea><br/> <input type="submit" value="ΠΡΠΏΡΠ°Π²ΠΈΡΡ"/> <!-- ΠΊΠ½ΠΎΠΏΠΊΠ° --> </form> <!-- ΠΊΠΎΠ½Π΅Ρ HTML-ΡΠΎΡΠΌΡ --> <hr/> <% if($Request->Form('nick')) { %> <a href="mailto:<%=$Request->Form('email')%>"> <%=$Request->Form('nick')%> </a> ΠΏΠΈΡΠ΅Ρ:<br/> <%=$Request->Form('comments')%><br/> <hr/> <% } %> </body> </html>
ΠΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ ΠΏΠΎΠ»Π΅ΠΉ ΡΠΎΡΠΌΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° Form ΠΏΡΠ΅Π΄ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° $Request, Ρ ΡΠ°Π½ΡΡΠ΅Π³ΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ HTTP-Π·Π°ΠΏΡΠΎΡΠ°. Π‘ΠΈΡΡΠ΅ΠΌΠ° Apache::ASP ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ ΠΏΠΎΠ»Π½ΡΠΉ Π½Π°Π±ΠΎΡ ΡΡΠ΅Π΄ΡΡΠ² Π΄Π»Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΡΠ°Π½ΠΈΡ, Π²ΠΊΠ»ΡΡΠ°Ρ ΡΡΠ΅Π΄ΡΡΠ²Π° ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠΌΠΈ ΡΠ΅Π°Π½ΡΠ°ΠΌΠΈ. Π§ΡΠΎΠ±Ρ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ Π² ΡΠ°Π±Π»ΠΎΠ½Ρ ΡΠ·ΡΠΊΠ° Perl, Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΡΠ°Π±Π»ΠΎΠ½ ASP, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠΉ web-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ . Perl Π² Π½Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ ΠΈΠ· Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΠΌΠΎΠ»Π»ΡΡΠΊΠ°Ρ , ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠΈΡ ΠΆΠ΅ΠΌΡΡΠΆΠΈΠ½Ρ, Π° ΡΠ°ΠΊΠΆΠ΅ Π΄Π»Ρ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΡΠΈΠΊΠ»Π΅ ΡΡΡΠΎΠΊ ΡΠ°Π±Π»ΠΈΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² Π·Π°ΠΏΡΠΎΡΠ°. Π€ΡΠ°Π³ΠΌΠ΅Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° Perl, Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ Π² ΡΠ΅ΠΊΡΡ ΡΠ°Π±Π»ΠΎΠ½Π°, Π²ΡΠ΄Π΅Π»Π΅Π½Ρ ΠΆΠΈΡΠ½ΡΠΌ ΡΡΠΈΡΡΠΎΠΌ:
<% # Π½Π°ΡΠ°Π»ΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ Perl use DBI; # ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ DBI my $table = "mollusc"; # ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΡ ΠΊ ΠΠ my $dbh = # ΡΠ΅ΡΠ΅Π· Π΄ΡΠ°ΠΉΠ²Π΅Ρ DBD::SQLite DBI->connect("dbi:SQLite:dbname=$table","","") or die; my $sth = # Π³ΠΎΡΠΎΠ²ΠΈΠΌ Π²ΡΠ±ΠΎΡΠΊΡ ΡΡΡΠΎΠΊ ΡΠ°Π±Π»ΠΈΡΡ $dbh->prepare("SELECT id,name,latin,area FROM $table") or die $dbh->errstr; $sth->execute() or die $sth->errstr(); # ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ Π·Π°ΠΏΡΠΎΡ %> <html> <!-- Π½Π°ΡΠ°Π»ΠΎ ΡΠ°Π±Π»ΠΎΠ½Π° --> <head><meta http-equiv="content-type" content="text/html; charset=windows-1251"> <title>ΠΠΎΠ»Π»Π΅ΠΊΡΠΈΡ ΡΠ°ΠΊΠΎΠ²ΠΈΠ½</title></head> <body> <h3 style="color:blue;">ΠΠΎΠ»Π»Π΅ΠΊΡΠΈΡ ΡΠ°ΠΊΠΎΠ²ΠΈΠ½</h3> <table border="1" cellpadding="1" cellspacing="0"> <!-- Π² ΡΠΈΠΊΠ»Π΅ Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΡΡΡΠΎΠΊΠΈ ΡΠ°Π±Π»ΠΈΡΡ ΠΈΠ· ΠΠ --> <% while (my $row = $sth->fetchrow_hashref) { %> <tr> <td rowspan="2"><img src="<%=$row->{id}%>.jpg"/></td> <td><b><%=$row->{name}%></b> <br/><i><%=$row->{latin}%></i></td> </tr> <tr><td><%=$row->{area}%></td></tr> <% } %> </table> <% $dbh->disconnect; %> <!-- ΠΎΡΡΠΎΠ΅Π΄ΠΈΠ½ΡΠ΅ΠΌΡΡ ΠΎΡ ΠΠ --> <body> <html> <!-- ΠΊΠΎΠ½Π΅Ρ ΡΠ°Π±Π»ΠΎΠ½Π° -->
HTML-ΡΡΡΠ°Π½ΠΈΡΠ°, ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π° Π½Π° ΡΠΈΡ. 18.2. ΠΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π½Π΅ΡΠ»ΠΎΠΆΠ½ΠΎ ΡΠ°ΡΡΠΈΡΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΠΎΠΈΡΠΊ ΠΏΠΎ Π»ΡΠ±ΠΎΠΉ ΠΈΠ· ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ ΡΠ°Π±Π»ΠΈΡΡ.
Π ΠΈΡ. 18.2. Web-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ
ΠΠ°Π»ΡΠ½Π΅ΠΉΡΠ°Ρ ΡΠ½ΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ² ΡΠ΅ΡΠΈ ΠΠ½ΡΠ΅ΡΠ½Π΅Ρ Π±Π°Π·ΠΈΡΡΠ΅ΡΡΡ Π½Π° ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ XML - ΡΠ°ΡΡΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° ΡΠ°Π·ΠΌΠ΅ΡΠΊΠΈ (eXtensible Markup Language), ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠΎΡΡΠΈΡΠΌΠΎΠΌ W3C. XML ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΏΡΠ°Π²ΠΈΠ»Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΡΡ ΡΠ·ΡΠΊΠΎΠ² ΡΠ°Π·ΠΌΠ΅ΡΠΊΠΈ, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΡ XML-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ (XML application). Π Π½Π°ΡΡΠΎΡΡΠ΅ΠΌΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠΎΠ·Π΄Π°Π½Ρ ΡΠΎΡΠ½ΠΈ ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΡΡ ΡΠ·ΡΠΊΠΎΠ² Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° XML. Π‘ΡΠ΅Π΄ΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΡ ΡΠ·ΡΠΊΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΡΠΏΠΎΠΌΡΠ½ΡΡΡ CML (ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Ρ ΠΈΠΌΠΈΡΠ΅ΡΠΊΠΈΡ Π΄Π°Π½Π½ΡΡ ), GML (ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π³Π΅ΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ Π΄Π°Π½Π½ΡΡ ), Jabber (ΠΎΠ±ΠΌΠ΅Π½ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ), MathML (ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΎΡΠΌΡΠ»), RDF (ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠ΅ΡΡΡΡΠΎΠ²), SMIL (ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΌΡΠ»ΡΡΠΈΠΌΠ΅Π΄ΠΈΠΉΠ½ΡΡ ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΠΉ), RSS (Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΡΠΎΠ²), SVG (ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠ°Ρ Π²Π΅ΠΊΡΠΎΡΠ½Π°Ρ Π³ΡΠ°ΡΠΈΠΊΠ°), WDDX (ΠΎΠ±ΠΌΠ΅Π½ Π΄Π°Π½Π½ΡΠΌΠΈ), WebDAV (web-ΠΏΠ°ΠΏΠΊΠΈ), XML/EDI (ΠΎΠ±ΠΌΠ΅Π½ Π±ΠΈΠ·Π½Π΅Ρ-Π΄Π°Π½Π½ΡΠΌΠΈ), XML-RPC (ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΉ Π²ΡΠ·ΠΎΠ² ΠΏΡΠΎΡΠ΅Π΄ΡΡ), XUL (ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°). ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΅Π΄ΠΈΠ½ΠΎΠΉ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ XML Π΄Π»Ρ ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΡΡ ΡΠ·ΡΠΊΠΎΠ² ΡΠ°Π·ΠΌΠ΅ΡΠΊΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΈΡ ΡΠ½ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΌΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ. Π―Π·ΡΠΊΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠΊΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ XML ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ Π΄Π»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΎΠ±Π»Π°ΡΡΡΡ Π·Π½Π°Π½ΠΈΠΉ. Π ΡΠΎΡΠΌΠ°ΡΠ΅ XML Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π² ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠΌ Π²ΠΈΠ΄Π΅, ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ UTF-8, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½ΠΈ Π±Π΅Π· ΡΡΡΠ΄Π° ΠΏΠ΅ΡΠ΅ΡΡΠ»Π°ΡΡΡΡ ΠΏΠΎ ΡΠ΅ΡΠΈ ΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌΠΈ Π½Π° Π²ΡΠ΅Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°Ρ . Π‘ΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠ°ΡΡΠΈΡΡΠ΅ΠΌΡΠΉ ΡΠ·ΡΠΊ ΡΡΠΈΠ»Π΅ΠΉ XSL (eXtensible Style Language) ΡΠΎΠ·Π΄Π°Π½ Π΄Π»Ρ ΡΠ½ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ XML Π² Π΄ΡΡΠ³ΠΈΠ΅ ΡΠΎΡΠΌΠ°ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ XML-Π΄Π°Π½Π½ΡΡ Π² Π²ΠΈΠ΄Π΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ² Π² ΡΠΎΡΠΌΠ°ΡΠ΅ HTML ΠΈΠ»ΠΈ RTF.
Π Perl ΠΈΠΌΠ΅Π΅ΡΡΡ Π±ΠΎΠ³Π°ΡΡΠΉ Π½Π°Π±ΠΎΡ ΡΡΠ΅Π΄ΡΡΠ² Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ°Π·Π½ΡΠΌΠΈ ΡΠ·ΡΠΊΠ°ΠΌΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠΊΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ XML: ΡΡΠΎ ΠΈ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ, ΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ XML-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ XML-ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° ΡΠ·ΡΠΊΠ΅ Perl ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π° ΠΊΠ½ΠΈΠ³Π° [19] ΠΈ Π΅Π΅ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ [45], Π° Π² ΠΊΠ½ΠΈΠ³Π΅ [30] ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ ΡΠ°Π±ΠΎΡΠ° Ρ Π³ΡΠ°ΡΠΈΠΊΠΎΠΉ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ SVG. ΠΠ»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠΌΡΡ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ SVG, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΠΎΠΉ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΡΡ Π²Π΅ΠΊΡΠΎΡΠ½ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ XML. Π§ΡΠΎΠ±Ρ ΡΠΎΡΡΠ°Π²ΠΈΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ± ΡΡΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅ ΠΈ ΠΏΡΠΎΠΈΠ»Π»ΡΡΡΡΠΈΡΠΎΠ²Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΡΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, Π½Π°ΠΏΠΈΡΠ΅ΠΌ CGI-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΡΠΌΠΈΡΡΡΡΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ SVG. ΠΠ½Π° Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° ΠΏΡΠΎΡΡΠΎΠΉ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ΅ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΠΎ ΠΏΠΎΡΠ΅ΡΠ°Π΅ΠΌΠΎΡΡΠΈ ΡΠ°ΠΉΡΠ° ΠΏΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ Π΄ΠΎΠΌΠ΅Π½Π°ΠΌ:
use CGI qw/:standard/; # ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ CGI use SVG; # ΠΈ SVG my $p = CGI->new; # ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ CGI ΠΈ Π·Π°Π΄Π°Π΄ΠΈΠΌ print $p->header(-type=>'image/svg+xml'); # ΡΠΈΠΏ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° # ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ SVG ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 400 Π½Π° 300 ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ my $svg= SVG->new(width=>400, height=>300); # ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΠΌ ΡΠΈΠ½ΠΈΠΉ ΡΠ΅ΠΊΡΡ, Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ 32,32 $svg->text(x=>32,y=>32, style=>"font-size:15;fill:blue" )->cdata('ΠΠΎΡΠ΅ΡΠ°Π΅ΠΌΠΎΡΡΡ ΡΠ°ΠΉΡΠ°: ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎ Π΄ΠΎΠΌΠ΅Π½Π°ΠΌ'); # Π²ΡΠ·ΠΎΠ²Π΅ΠΌ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ 4-Ρ ΠΏΠΎΠ»ΠΎΡ Π³ΡΠ°ΡΠΈΠΊΠ° bar(20, 50, 'red', 55, '.RU'); bar(20, 80, 'blue', 24, '.COM'); bar(20, 110, 'green', 12, '.ORG'); bar(20, 140, 'black', 9, 'ΠΏΡΠΎΡΠΈΠ΅'); # ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΠΌ ΡΠ΅ΠΊΡΡ Ρ Π²Π΅ΡΡΠΈΡΠΌΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ ΡΡΠ΅Π΄ΡΡΠ²: $svg->text(x=>12,y=>200, )->cdata("Perl $] + ". # Π²Π΅ΡΡΠΈΡ Perl "SVG.pm $SVG::VERSION + ". # Π²Π΅ΡΡΠΈΡ ΠΌΠΎΠ΄ΡΠ»Ρ SVG "CGI.pm $CGI::VERSION"); # Π²Π΅ΡΡΠΈΡ ΠΌΠΎΠ΄ΡΠ»Ρ CGI my $out = $svg->xmlify(); # ΠΎΡΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ΅ΠΌ ΡΠ΅ΠΊΡΡ XML print $out; # ΠΈ ΠΎΡΠΏΡΠ°Π²ΠΈΠΌ Π΅Π³ΠΎ Π±ΡΠ°ΡΠ·Π΅ΡΡ sub bar { # ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²ΡΠ²ΠΎΠ΄Π° ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π³ΡΠ°ΡΠΈΠΊΠ°, # ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ, ΡΠ²Π΅Ρ, % ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ my ($x, $y, $color, $procent, $caption) = @_; # Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ ΠΏΡΠΎΠΏΠΎΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΠ΅Π½ΡΡ $svg->rectangle( x => $x, y => $y, height => 30, width => $procent*10, style => "opacity:1; fill:$color; fill-opacity:0.4" ); # ΠΈ ΠΏΠΎΡΡΠ½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ΅ΠΊΡΡ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ²Π΅ΡΠ° $svg->text( x=>$x+5,y=>$y+20,style=>"font-size:15;fill:$color" )->cdata("$caption $procent %"); }
SVG-Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ, ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, - ΡΡΠΎ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ» Π² ΡΠΎΡΠΌΠ°ΡΠ΅ XML, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ: