{"id":47,"date":"2006-08-21T07:08:09","date_gmt":"2006-08-21T07:08:09","guid":{"rendered":"http:\/\/www.dereckson.be\/blog\/2006\/08\/21\/include-a-tcl-script-on-your-php-code\/"},"modified":"2018-04-09T03:43:15","modified_gmt":"2018-04-09T01:43:15","slug":"include-a-tcl-script-on-your-php-code","status":"publish","type":"post","link":"https:\/\/www.dereckson.be\/blog\/2006\/08\/21\/include-a-tcl-script-on-your-php-code\/","title":{"rendered":"Include a TCL script (or another CGI flavour) on your PHP code"},"content":{"rendered":"<p>How to include a TCL script in a PHP page ?<\/p>\n<p>Short answer : <b>echo `tclsh script.tcl`<\/b><\/p>\n<p><!--more--><\/p>\n<style type=\"text\/css\"> \/* GeSHi (c) Nigel McNie 2004 (http:\/\/qbnz.com\/highlighter) *\/ .tcl .de1, .tcl .de2 {color: #000060; font-weight: normal;} .tcl  {border: 1px dotted #a0a0a0; font-family: 'Courier New', Courier, monospace; font-size: 110%; background-color: #f0f0f0; margin: 0; line-height: 110%; padding: 0;color: #0000bb;} .tcl a:link {color: #006;} .tcl a:hover {background-color: #d6d6e6;} .tcl .head {font-family: Verdana, Arial, sans-serif; color: #808080; font-size: 70%; font-weight: bold; background-color: #f0f0ff; border-bottom: 1px solid #d0d0d0; padding: 2px;} .tcl .foot {font-family: Verdana, Arial, sans-serif; color: #808080; font-size: 70%; font-weight: bold; background-color: #f0f0ff; border-top: 1px solid #d0d0d0; padding: 2px;} .tcl .imp {font-weight: bold; color: red;} .tcl li {font-family: 'Courier New', Courier, monospace; color: #000060; background-color: #e0e0e0; padding-bottom: 2px;} .tcl li.li2 {font-weight: bold; color: #000090; line-height: 90%} .tcl .kw1 {color: #ff7700;font-weight:bold;} .tcl .kw2 {color: #008000;} .tcl .kw3 {color: #dc143c;} .tcl .kw4 {color: #0000cd;} .tcl .co1 {color: #808080; font-style: italic;font-style: normal;} .tcl .coMULTI {color: #808080; font-style: italic;font-style: normal;} .tcl .es0 {color: #000099; font-weight: bold;font-weight: normal;} .tcl .br0 {color: #66cc66;} .tcl .st0 {color: #483d8b;} .tcl .nu0 {color: #ff4500;} .tcl .me1 {color: black;} .tcl .me {1} .tcl .re0 {color: #ff3333;} .php .de1, .php .de2 {color: #000060; font-weight: normal;} .php  {border: 1px dotted #a0a0a0; font-family: 'Courier New', Courier, monospace; font-size: 110%; background-color: #f0f0f0; margin: 0; line-height: 110%; padding: 0;color: #000099;} .php a:link {color: #006;} .php a:hover {background-color: #d6d6e6;} .php .head {font-family: Verdana, Arial, sans-serif; color: #808080; font-size: 70%; font-weight: bold; background-color: #f0f0ff; border-bottom: 1px solid #d0d0d0; padding: 2px;} .php .foot {font-family: Verdana, Arial, sans-serif; color: #808080; font-size: 70%; font-weight: bold; background-color: #f0f0ff; border-top: 1px solid #d0d0d0; padding: 2px;} .php .imp {font-weight: bold; color: red;} .php li {font-family: 'Courier New', Courier, monospace; color: #000060; background-color: #e0e0e0; padding-bottom: 2px;} .php .kw1 {color: #b1b100;} .php .kw2 {color: #000000; font-weight: bold;} .php .kw3 {color: #000066;} .php .co1 {color: #808080; font-style: italic;} .php .co2 {color: #808080; font-style: italic;} .php .coMULTI {color: #808080; font-style: italic;} .php .es0 {color: #000099; font-weight: bold;font-weight: normal;} .php .br0 {color: #66cc66;} .php .st0 {color: #ff0000;} .php .nu0 {color: #cc66cc;} .php .me1 {color: #006600;} .php .me2 {color: #006600;} .php .me {1} .php .re0 {color: #0000ff;} \t<\/style>\n<p>Here&#8217;s my Pluton code.<\/p>\n<div class=\"php\" style=\"border: 1px dotted #a0a0a0; font-family: 'Courier New', Courier, monospace; font-size: 110%; background-color: #f0f0f0; margin: 0; line-height: 110%; padding: 0; color: #000099;\">\n<div class=\"head\">Include a $body tcl script<\/div>\n<ol>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"co1\">\/\/Les scripts TCL s&#8217;ex\u00e9cutent dans _includesTCL et se voient pass\u00e9s en argument l&#8217;user_id et la session_id<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><a href=\"http:\/\/www.php.net\/chdir\"><span class=\"kw3\">chdir<\/span><\/a><span class=\"br0\">(<\/span><span class=\"st0\">&#8220;_includes\/TCL&#8221;<\/span><span class=\"br0\">)<\/span>;<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><a href=\"http:\/\/www.php.net\/echo\"><span class=\"kw3\">echo<\/span><\/a> `tclsh ..\/..\/<span class=\"re0\">$body<\/span> <span class=\"re0\">$Utilisateur<\/span><span class=\"br0\">[&#8216;<\/span>user_id&#8217;<span class=\"br0\">]<\/span> <span class=\"re0\">$_SESSION<\/span><span class=\"br0\">[&#8216;<\/span>ID&#8217;<span class=\"br0\">]<\/span>`;<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"co1\">\/\/Revenons maintenant \u00e0 notre dossier \/ pour ajouter correctement notre footer<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><a href=\"http:\/\/www.php.net\/chdir\"><span class=\"kw3\">chdir<\/span><\/a><span class=\"br0\">(<\/span><span class=\"st0\">&#8220;..\/..\/&#8221;<\/span><span class=\"br0\">)<\/span>;<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><\/div>\n<\/li>\n<\/ol>\n<\/div>\n<p>Pluton is the PHP engine developed on <a href=\"http:\/\/www.espace-win.org\" hreflang=\"fr\">Espace Win<\/a> and also used on <a href=\"http:\/\/www.double-v.com\/\" hreflang=\"fr\">Double V Network<\/a> website. I&#8217;ve learned PHP coding it in 2001.<\/p>\n<p>&nbsp;<\/p>\n<p>You&#8217;ll certainly need some libraries ; I&#8217;ve a TCL script initializing MySQL connection and another with user profiles functions. Let&#8217;s put all in a directory, chdir to it, and no need to worry about paths.<br \/>\nOf couse, after the script, we come back to our initial directory to avoid broke the end of our php app.<\/p>\n<p>&nbsp;<\/p>\n<p><strong><a href=\"http:\/\/www.tcl.tk\/man\/tcl8.5\/UserCmd\/tclsh.htm\" hreflang=\"en\">tclsh<\/a><\/strong> is a shell-like TCL interpreter, and &#8220; is the backtick operator, executing the command inside and returning result. Of couse, tclsh must be in tour path. And you should consider use tclsh84 or tclsh85 instead. If I&#8217;ve written tclsh to get TCL 8.4 on Guenwhyvar, the FreeBSD Espace Win prod server and <a href=\"http:\/\/wiki.tcl.tk\/10630\" hreflang=\"en\">TCL 8.5<\/a> on Leviathan, my laptop.<\/p>\n<p>&nbsp;<\/p>\n<p>We pass two arguments at our TCL script, the user id and session id of the logged user. I presume user_id is satisfactory but we&#8217;ll see in the future.<\/p>\n<p>Oh, btw, our user_id is [lindex $argv 0] and session id [lindex $argv 1], tclsh putting our args in argv variable, <a href=\"http:\/\/www.tcl.tk\/man\/tcl8.5\/TclCmd\/lindex.htm\" hreflang=\"en\">lindex<\/a> $list $n returning element $n of our list $list.<\/p>\n<p>&nbsp;<\/p>\n<h2>Inside TCL<\/h2>\n<p>Now, let&#8217;s see what I&#8217;ve coded in TCL :<br \/>\n[ <a href=\"http:\/\/www.espace-win.org\/IRC\/Projets\/\" hreflang=\"fr\">www.espace-win.org\/IRC\/Projets<\/a> | <a href=\"\/blog\/codes\/IndexProjets.tcl\" hreflang=\"en\">source code<\/a> ]<\/p>\n<p>This is a webpage viewing #Win projects. I had already the TCL output in SurfBoard so why recode it again in PHP ?<\/p>\n<p>In core.tcl we&#8217;ve Pluton user profile functions and two interesting :<\/p>\n<div class=\"tcl\" style=\"border: 1px dotted #a0a0a0; font-family: 'Courier New', Courier, monospace; font-size: 110%; background-color: #f0f0f0; margin: 0; line-height: 110%; padding: 0; color: #0000bb;\">\n<div class=\"head\">Core.tcl snippets (freely use them, BSD license)<\/div>\n<ol>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"kw1\">proc<\/span> runningOnWindows <span class=\"br0\">{<\/span><span class=\"br0\">}<\/span> <span class=\"br0\">{<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">\u00a0 \u00a0 \u00a0 \u00a0 <span class=\"kw2\">regexp<\/span> <span class=\"st0\">&#8220;.exe$&#8221;<\/span> <span class=\"br0\">[<\/span><span class=\"kw2\">info<\/span> nameofexecutable<span class=\"br0\">]<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"br0\">}<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><\/div>\n<\/li>\n<li class=\"li2\">\n<div class=\"de2\"><span class=\"kw1\">proc<\/span> isnumber <span class=\"br0\">{<\/span><span class=\"kw2\">string<\/span><span class=\"br0\">}<\/span> <span class=\"br0\">{<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">\u00a0 \u00a0 \u00a0 \u00a0 <span class=\"kw1\">if<\/span> <span class=\"br0\">{<\/span><span class=\"br0\">(<\/span><span class=\"br0\">[<\/span><span class=\"kw2\">string<\/span> compare <span class=\"re0\">$string<\/span> <span class=\"st0\">&#8220;&#8221;<\/span><span class=\"br0\">]<\/span><span class=\"br0\">)<\/span> &amp;&amp; <span class=\"br0\">(<\/span>!<span class=\"br0\">[<\/span><span class=\"kw2\">regexp<\/span> <span class=\"br0\">[<\/span>^<span class=\"nu0\">0<\/span><span class=\"nu0\">-9<\/span><span class=\"br0\">]<\/span> <span class=\"re0\">$string<\/span><span class=\"br0\">]<\/span><span class=\"br0\">)<\/span><span class=\"br0\">}<\/span> <span class=\"br0\">{<\/span><span class=\"kw1\">return<\/span> <span class=\"nu0\">1<\/span><span class=\"br0\">}<\/span> <span class=\"br0\">{<\/span><span class=\"kw1\">return<\/span> <span class=\"nu0\">0<\/span><span class=\"br0\">}<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"br0\">}<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><\/div>\n<\/li>\n<\/ol>\n<\/div>\n<p>MySQL.tcl opens a MySQL connection :<\/p>\n<div class=\"tcl\" style=\"border: 1px dotted #a0a0a0; font-family: 'Courier New', Courier, monospace; font-size: 110%; background-color: #f0f0f0; margin: 0; line-height: 110%; padding: 0; color: #000099;\">\n<div class=\"head\">MySQL.tcl<\/div>\n<ol>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"kw1\">if<\/span> <span class=\"br0\">[<\/span>runningOnWindows<span class=\"br0\">]<\/span> <span class=\"br0\">{<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">\u00a0 \u00a0 \u00a0 \u00a0 <span class=\"kw2\">load<\/span> fbsql.dll<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"br0\">}<\/span> <span class=\"kw1\">else<\/span> <span class=\"br0\">{<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">\u00a0 \u00a0 \u00a0 \u00a0 <span class=\"kw2\">load<\/span> fbsql.so<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"br0\">}<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">sql connect localhost login pass<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">sql selectdb EspaceWin<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><\/div>\n<\/li>\n<\/ol>\n<\/div>\n<p>Then Projets.tcl contains functions I&#8217;ve copied from my previous Su<\/p>\n<div class=\"tcl\" style=\"border: 1px dotted #a0a0a0; font-family: 'Courier New', Courier, monospace; font-size: 110%; background-color: #f0f0f0; margin: 0; line-height: 110%; padding: 0; color: #000099;\">\n<div class=\"head\">Projets.tcl<\/div>\n<ol>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"kw1\">proc<\/span> projet.who <span class=\"br0\">{<\/span>id <span class=\"br0\">{<\/span>niveau <span class=\"st0\">&#8220;-1&#8221;<\/span><span class=\"br0\">}<\/span><span class=\"br0\">}<\/span> <span class=\"br0\">{<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">\u00a0 \u00a0 \u00a0 \u00a0 <span class=\"co1\">#Liste les membres d&#8217;un projet ayant le niveau donn\u00e9<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">\u00a0 \u00a0 \u00a0 \u00a0 <span class=\"co1\">#Si pas de niveau sp\u00e9cifi\u00e9, liste 2 et 9 (manager et participants projets)<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">\u00a0 \u00a0 \u00a0 \u00a0 <span class=\"kw1\">if<\/span> <span class=\"br0\">{<\/span><span class=\"re0\">$niveau<\/span> == <span class=\"nu0\">-1<\/span><span class=\"br0\">}<\/span> <span class=\"br0\">{<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <span class=\"kw1\">return<\/span> <span class=\"br0\">[<\/span>sql <span class=\"st0\">&#8220;SELECT u.username FROM Utilisateurs u, Projets_membres pm WHERE pm.project_id LIKE &#8216;$id&#8217; AND (pm.niveau = &#8216;2&#8217; OR pm.niveau = &#8216;9&#8217;) AND u.user_id = pm.user_id ORDER BY u.username ASC&#8221;<\/span><span class=\"br0\">]<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">\u00a0 \u00a0 \u00a0 \u00a0 <span class=\"br0\">}<\/span> <span class=\"kw1\">else<\/span> <span class=\"br0\">{<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <span class=\"kw1\">return<\/span> <span class=\"br0\">[<\/span>sql <span class=\"st0\">&#8220;SELECT u.username FROM Utilisateurs u, Projets_membres pm WHERE pm.project_id LIKE &#8216;$id&#8217; AND pm.niveau = &#8216;$niveau&#8217; AND u.user_id = pm.user_id ORDER BY u.username ASC&#8221;<\/span><span class=\"br0\">]<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">\u00a0 \u00a0 \u00a0 \u00a0 <span class=\"br0\">}<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"br0\">}<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><\/div>\n<\/li>\n<\/ol>\n<\/div>\n<p>Finally, here the extra functions in core.tcl to get a fully functionnal code \ud83d\ude09<\/p>\n<div class=\"tcl\" style=\"border: 1px dotted #a0a0a0; font-family: 'Courier New', Courier, monospace; font-size: 110%; background-color: #f0f0f0; margin: 0; line-height: 110%; padding: 0; color: #000099;\">\n<div class=\"head\">Core.tcl &#8211; the users profiles functions<\/div>\n<ol>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"co1\">################################################################################<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"co1\"># Fonctions utilisateurs, et de gestion du profil\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 #<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"co1\">################################################################################<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"co1\">#R\u00e9cup\u00e8re l&#8217;username de $who<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"co1\">#$who : user_id ou username<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"kw1\">proc<\/span> getnom <span class=\"br0\">{<\/span>who<span class=\"br0\">}<\/span> <span class=\"br0\">{<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">\u00a0 \u00a0 \u00a0 \u00a0 getuserinfo <span class=\"br0\">[<\/span>lectureID <span class=\"re0\">$who<\/span><span class=\"br0\">]<\/span> username<\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"br0\">}<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"co1\">#R\u00e9cup\u00e8re le champs $data du profil de $who<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"co1\">#$who : user_id ou username<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"co1\">#$data : nom du champs de la table Utilisateurs \u00e0 r\u00e9cup\u00e9rer<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"kw1\">proc<\/span> getuserinfo <span class=\"br0\">{<\/span>who data<span class=\"br0\">}<\/span> <span class=\"br0\">{<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">\u00a0 \u00a0 \u00a0 \u00a0 sql <span class=\"st0\">&#8220;SELECT $data FROM Utilisateurs WHERE user_id = &#8216;[lectureID $who]'&#8221;<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"br0\">}<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"co1\">#Met \u00e0 jour le champs $data du profil de $who sur $valeur<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"co1\">#$who : user_id ou username<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"co1\">#$data : nom du champs de la table Utilisateurs \u00e0 mettre \u00e0 jour<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"co1\">#$valeur : nouvelle valeur de ce champs<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"kw1\">proc<\/span> setuserinfo <span class=\"br0\">{<\/span>who data valeur<span class=\"br0\">}<\/span> <span class=\"br0\">{<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">\u00a0 \u00a0 \u00a0 \u00a0 sql <span class=\"st0\">&#8220;UPDATE Utilisateurs SET $data = &#8216;[sqlfilt $valeur]&#8217; WHERE user_id = [lectureID $who]&#8221;<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"br0\">}<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"co1\">#R\u00e9cup\u00e8re l&#8217;user_id de $who<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"co1\">#$who : user_id ou username<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"kw1\">proc<\/span> lectureID <span class=\"br0\">{<\/span>who<span class=\"br0\">}<\/span> <span class=\"br0\">{<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">\u00a0 \u00a0 \u00a0 \u00a0 <span class=\"kw1\">if<\/span> !<span class=\"br0\">[<\/span>isnumber <span class=\"re0\">$who<\/span><span class=\"br0\">]<\/span> <span class=\"br0\">{<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 sql <span class=\"st0\">&#8220;SELECT user_id FROM Utilisateurs WHERE username LIKE &#8216;$who'&#8221;<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">\u00a0 \u00a0 \u00a0 \u00a0 <span class=\"br0\">}<\/span> <span class=\"kw1\">else<\/span> <span class=\"br0\">{<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <span class=\"kw1\">return<\/span> <span class=\"re0\">$who<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\">\u00a0 \u00a0 \u00a0 \u00a0 <span class=\"br0\">}<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><span class=\"br0\">}<\/span><\/div>\n<\/li>\n<li class=\"li1\">\n<div class=\"de1\"><\/div>\n<\/li>\n<\/ol>\n<\/div>\n<p>I hope you&#8217;ve catched return is not necessary in TCL, by default a function return the result returned by it last instruction (so getnom proc returns getuserinfo result). Eminently readable source code \ud83d\ude42<\/p>\n<p>Code highlighting is provided by <a href=\"http:\/\/qbnz.com\/highlighter\/\" hreflang=\"en\">GeSHi<\/a>, very nice no ?<br \/>\nThis is fully integrated in Pastebin (and <a href=\"http:\/\/pastebin.espace-win.org\/\" hreflang=\"fr\">our pastebin<\/a> has an up to date GeSHi version with more languages than the original).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>How to include a TCL script in a PHP page ?<\/p>\n<p>Short answer : <b>echo `tclsh script.tcl`<\/b><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[45],"tags":[17],"class_list":["post-47","post","type-post","status-publish","format-standard","hentry","category-misc","tag-php"],"_links":{"self":[{"href":"https:\/\/www.dereckson.be\/blog\/wp-json\/wp\/v2\/posts\/47","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dereckson.be\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dereckson.be\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dereckson.be\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dereckson.be\/blog\/wp-json\/wp\/v2\/comments?post=47"}],"version-history":[{"count":2,"href":"https:\/\/www.dereckson.be\/blog\/wp-json\/wp\/v2\/posts\/47\/revisions"}],"predecessor-version":[{"id":731,"href":"https:\/\/www.dereckson.be\/blog\/wp-json\/wp\/v2\/posts\/47\/revisions\/731"}],"wp:attachment":[{"href":"https:\/\/www.dereckson.be\/blog\/wp-json\/wp\/v2\/media?parent=47"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dereckson.be\/blog\/wp-json\/wp\/v2\/categories?post=47"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dereckson.be\/blog\/wp-json\/wp\/v2\/tags?post=47"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}