CINXE.COM
Tcl Tutorial Lesson 0
<!DOCTYPE html> <html lang='en'> <head> <meta charset='utf-8'> <meta name='viewport' content='width=device-width, initial-scale=1'> <meta name='description' content='Tclers wiki'> <meta name='author' content=''> <link rel='icon' href='/img/favicon.ico'> <title>Tcl Tutorial Lesson 0</title> <!-- Latest compiled and minified CSS --> <link rel='stylesheet' href='https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css'> <link rel='stylesheet' href='/css/nikit.css' type='text/css'> <link rel='stylesheet' href='/css/sh_style.css' type='text/css'> <link rel='stylesheet' href='https://cdnjs.cloudflare.com/ajax/libs/jquery.tablesorter/2.31.0/css/theme.bootstrap_3.min.css' type='text/css'> <script src='//cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js'></script> </head> <body onload='sh_highlightDocument(); nikitUser();'> <nav class='navbar navbar-fixed-top navbar-inverse'> <div class='container'> <div class='navbar-header'> <button type='button' class='navbar-toggle' data-toggle='collapse' data-target='#myNavbar'> <span class='icon-bar'></span> <span class='icon-bar'></span> <span class='icon-bar'></span> </button> <ul class='nav navbar-nav'> <li class='dropdown'> <a class='dropdown-toggle' data-toggle='dropdown' href='#'> Tcler's Wiki<span class='caret'></span></a> <ul class='dropdown-menu scrollable-menu' role='menu'><li><a href='/welcome'>Home</a></li> <li><a rel='nofollow' href='/recent'>Changes</a></li> <li><a rel='nofollow' href='/_random'>Random page</a></li> <li><a rel='nofollow' href='/_new'>New page</a></li> </ul> </li> </ul> </div> <div class='collapse navbar-collapse' id='myNavbar'> <ul class='nav navbar-nav'> <li class='dropdown' id='li_idPageEdit' style='display:none'> <a class='dropdown-toggle' data-toggle='dropdown' href='#'><span id=name_idPageEdit>Page</span><span class='caret'></span></a> <ul class='dropdown-menu scrollable-menu' role='menu'><li><a rel='nofollow' href='/_edit/Tcl+Tutorial+Lesson+0?A=1'>Comment</a></li> <li><a rel='nofollow' hidden='true' href='/_edit/Tcl+Tutorial+Lesson+0'>Edit</a></li> <li><a rel='nofollow' href='/_upload/Tcl+Tutorial+Lesson+0'>Upload</a></li> <li><a rel='nofollow' href='/ref/Tcl+Tutorial+Lesson+0'>References</a></li> <li><a rel='nofollow' href='/history/Tcl+Tutorial+Lesson+0'>History</a></li> <li><hr></li> <li><a href='#a035f6e5885b3af2b23291bc9ebc53f6a88ae5be6045b04c657583a2d9898162'> Introduction </a> </li> <li><a href='#da1c98414c05a429bdf7093d38a5d769f553f3a44656a617ccf4af262f513465'>Available lessons</a> </li> <li><a href='#831d0f72d242b7d12d4ef15123d43145e97e95be5aba57cd150e434159aae202'> Getting started</a> </li> <li><a href='#2ccb4e6fa1c820710789823025aa9dfaef8348927b1e19c3ec6454d34c9c25e7'> Flow Control</a> </li> <li><a href='#3d826f91835e673aed69047de4154f9993e141e28b9aa54222ae64f540b96cf7'> Data Types</a> </li> <li><a href='#dc2d685948b8a2ec0053530f4b31a45e93415592c93280821f56533541800a7f'> Input and Output</a> </li> <li><a href='#099ca29ac802c6f16509c8daca14c0e5e1d25af2d9e574bc564fa5615fe64cf1'> Introspection, Debugging and Performance</a> </li> <li><a href='#e9b0f1340ce6c76d0b46175279e193fd9180190db3e3bd4648cae9c7c9f63431'> Modularization and Code Reuse</a> </li> <li><a href='#1913fabf8c8966ed13f730c17f8fe574d8a0a0bd30b96ca13051fc563d92e9ca'> Cooperating with the interpreter</a> </li> <li><a href='#ff991510b02526958e532810f44218c62be2d6457c727d276600e66af3a86f2e'> Programming techniques</a> </li> <li><a href='#0f1875352cee736b6311fa4b4eda2b17d4aa81c454c91a4f3420af57f1555480'> Additional Resources</a> </li> <li><a href='#b5bed787163dbe4d52c32227d5ffb7841d5af7e1f8f6b79484c326c7656f6329'> Credits</a> </li> </ul> </li> <li class='dropdown' id='li_idPageNoEdit' style='display:none'> <a class='dropdown-toggle' data-toggle='dropdown' href='#'><span id=name_idPageNoEdit>Page</span><span class='caret'></span></a> <ul class='dropdown-menu scrollable-menu' role='menu'><li><a rel='nofollow' href='/ref/Tcl+Tutorial+Lesson+0'>References</a></li> <li><a rel='nofollow' href='/history/Tcl+Tutorial+Lesson+0'>History</a></li> <li><hr></li> <li><a href='#a035f6e5885b3af2b23291bc9ebc53f6a88ae5be6045b04c657583a2d9898162'> Introduction </a> </li> <li><a href='#da1c98414c05a429bdf7093d38a5d769f553f3a44656a617ccf4af262f513465'>Available lessons</a> </li> <li><a href='#831d0f72d242b7d12d4ef15123d43145e97e95be5aba57cd150e434159aae202'> Getting started</a> </li> <li><a href='#2ccb4e6fa1c820710789823025aa9dfaef8348927b1e19c3ec6454d34c9c25e7'> Flow Control</a> </li> <li><a href='#3d826f91835e673aed69047de4154f9993e141e28b9aa54222ae64f540b96cf7'> Data Types</a> </li> <li><a href='#dc2d685948b8a2ec0053530f4b31a45e93415592c93280821f56533541800a7f'> Input and Output</a> </li> <li><a href='#099ca29ac802c6f16509c8daca14c0e5e1d25af2d9e574bc564fa5615fe64cf1'> Introspection, Debugging and Performance</a> </li> <li><a href='#e9b0f1340ce6c76d0b46175279e193fd9180190db3e3bd4648cae9c7c9f63431'> Modularization and Code Reuse</a> </li> <li><a href='#1913fabf8c8966ed13f730c17f8fe574d8a0a0bd30b96ca13051fc563d92e9ca'> Cooperating with the interpreter</a> </li> <li><a href='#ff991510b02526958e532810f44218c62be2d6457c727d276600e66af3a86f2e'> Programming techniques</a> </li> <li><a href='#0f1875352cee736b6311fa4b4eda2b17d4aa81c454c91a4f3420af57f1555480'> Additional Resources</a> </li> <li><a href='#b5bed787163dbe4d52c32227d5ffb7841d5af7e1f8f6b79484c326c7656f6329'> Credits</a> </li> </ul> </li> <li><a href="/page/Showcase">Showcase</a></li> <li><a href="/page/Tcl+Tutorial+Lesson+0">Tutorial</a></li> <li><a href="/page/Articles">Articles</a></li> <li><a href="/page/Tcl+Playground">Playground</a></li> <li class='dropdown'> <a class='dropdown-toggle' data-toggle='dropdown' href='#'> Help<span class='caret'></span></a> <ul class='dropdown-menu scrollable-menu' role='menu'><li><a rel='nofollow' href='/page/Help'>Page Markup</a></li> <li><a rel='nofollow' href='/page/How+do+Wiki+Categories+work'>Wiki Categories</a></li> <li><a rel='nofollow' href='/page/Contents'>Topics</a></li> <li><a rel='nofollow' target='_blank' href='https://chiselapp.com/user/stevel/repository/nikit/ticket'>Report Problems</a></li> <li><a rel='nofollow' href='/privacy'>Privacy</a></li> <li><a rel='nofollow' href='/license'>License</a></li> </ul> </li> </ul> <ul class='nav navbar-nav navbar-right'> <li class='dropdown'> <a class='dropdown-toggle' data-toggle='dropdown' href='#'><span id=name_SMenu>User</span><span class='caret'></span></a> <ul class='dropdown-menu' id='ul_SMenu'> </ul> </li> </ul> <form class='navbar-form navbar-right' method='post' action='/search' id='searchform'> <input name='Q' type='text' class='form-control' placeholder='Search...'/> <input type="hidden" name="sites" value="wiki.tcl-lang.org"/> </form> </div> </div> </nav> <div class='container'> <div class='row'> <div class='col-xs-12'> <h2>Tcl Tutorial Lesson 0</h2> </div> </div> <div class='row'> <div class='col-xs-12'> <h2 id='a035f6e5885b3af2b23291bc9ebc53f6a88ae5be6045b04c657583a2d9898162' class='mkup_h1'> Introduction </h2><div class='mkup_centered'><p class='mkup_p'><b class='mkup_b'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Index'>Index</a></b> | <b class='mkup_b'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+0a'>Next lesson</a></b></p></div> <p class='mkup_p'>Welcome to the Tcl tutorial. We wrote it with the goal of helping you to learn Tcl. It is aimed at those who have some knowledge of programming, although you certainly don't have to be an expert. The tutorial is intended as a companion to the Tcl manual pages which provide a reference for all Tcl commands.</p> <p class='mkup_p'>It is divided into brief sections covering different aspects of the language. Depending on what system you are on, you can always look up the reference documentation for commands that you are curious about. On Unix for example, <span class='mkup_tt'>man while</span> would bring up the man page for the <span class='mkup_tt'>while</span> command.</p> <p class='mkup_p'>Each section is accompanied by relevant examples showing you how to put to use the material covered.</p> <h2 id='da1c98414c05a429bdf7093d38a5d769f553f3a44656a617ccf4af262f513465' class='mkup_h1'>Available lessons</h2><h3 id='831d0f72d242b7d12d4ef15123d43145e97e95be5aba57cd150e434159aae202' class='mkup_h2'>Getting started</h3><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+0'>Introduction</a></p><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+0a'>Running Tcl</a></p><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+1'>Simple Text Output</a></p><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+2'>Assigning values to variables</a></p><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+3'>Evaluation and Substitutions 1: Grouping arguments with ""</a></p><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+4'>Evaluation and Substitutions 2: Grouping arguments with {}</a></p><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+5'>Evaluation and Substitutions 3: Grouping arguments with []</a></p><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+6'>Results of a command - Math 101</a></p><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+6a'>Computers and Numbers</a></p><h3 id='2ccb4e6fa1c820710789823025aa9dfaef8348927b1e19c3ec6454d34c9c25e7' class='mkup_h2'>Flow Control</h3><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+7'>Numeric Comparisons 101 - if</a></p><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+8'>Textual Comparison - switch</a></p><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+9'>Looping 101 - While loop</a></p><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+10'>Looping 102 - For and incr</a></p><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+11'>Adding new commands to Tcl - proc</a></p><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+12'>Variations in proc arguments and return values</a></p><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+13'>Variable scope - global and upvar</a></p><h3 id='3d826f91835e673aed69047de4154f9993e141e28b9aa54222ae64f540b96cf7' class='mkup_h2'>Data Types</h3><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+14'>Tcl Data Structures 101 - The list</a></p><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+15'>Adding and Deleting members of a list</a></p><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+16'>More list commands - lsearch, lsort, lrange</a></p><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+16a'>Simple pattern matching - "globbing"</a></p><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+17'>String Subcommands - length index range</a></p><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+18'>String comparisons - compare match first last wordend</a></p><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+19'>Modifying Strings - tolower, toupper, trim, format</a></p><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+20'>Regular Expressions 101</a></p><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+20a'>More Examples Of Regular Expressions</a></p><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+21'>More Quoting Hell - Regular Expressions 102</a></p><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+22'>Associative Arrays</a></p><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+23'>More On Arrays - Iterating and use in procedures</a></p><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+23a'>Dictionaries</a></p><h3 id='dc2d685948b8a2ec0053530f4b31a45e93415592c93280821f56533541800a7f' class='mkup_h2'>Input and Output</h3><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+24'>File Access 101</a></p><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+35'>Changing Working Directory - cd, pwd</a></p><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+25'>Information about Files - file, glob</a></p><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+26'>Running other programs from Tcl - exec, open</a></p><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+40'>Channel I/O: socket, fileevent, vwait</a></p><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+42'>More channel I/O - fblocked and fconfigure</a></p><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+26a'>Communicating with other programs - socket, fileevent</a></p><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+41'>Time and Date - clock</a></p><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+Databases'>Using databases</a></p><h3 id='099ca29ac802c6f16509c8daca14c0e5e1d25af2d9e574bc564fa5615fe64cf1' class='mkup_h2'>Introspection, Debugging and Performance</h3><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+27'>Learning the existence of commands and variables - info</a></p><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+28'>State of the interpreter - info</a></p><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+29'>Information about procs - info</a></p><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+36'>Debugging and Errors - errorInfo errorCode catch error return</a></p><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+37'>More Debugging - trace</a></p><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+39'>Timing scripts</a></p><h3 id='e9b0f1340ce6c76d0b46175279e193fd9180190db3e3bd4648cae9c7c9f63431' class='mkup_h2'>Modularization and Code Reuse</h3><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+30'>Modularization - source</a></p><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+31'>Building reusable libraries - packages and namespaces</a></p><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+APP'>Building and distributing applications</a></p><h3 id='1913fabf8c8966ed13f730c17f8fe574d8a0a0bd30b96ca13051fc563d92e9ca' class='mkup_h2'>Cooperating with the interpreter</h3><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+32'>Creating Commands - eval</a></p><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+33'>More command construction - format, list</a></p><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+34'>Substitution without evaluation - format, subst</a></p><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+38'>Command line arguments and environment strings</a></p><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+43'>Child interpreters</a></p><h3 id='ff991510b02526958e532810f44218c62be2d6457c727d276600e66af3a86f2e' class='mkup_h2'>Programming techniques</h3><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+OOP1'>Object-oriented programming 101</a></p><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+OOP2'>More on object-oriented programming</a></p><p class='mkup_p'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+CORO'>Programming with coroutines</a></p><h3 id='0f1875352cee736b6311fa4b4eda2b17d4aa81c454c91a4f3420af57f1555480' class='mkup_h2'>Additional Resources</h3><p class='mkup_p'>The <a class='mkup_a mkup_known' href='/page/Tcl+Developer+Guide'>Tcl Developer Guide</a> provides information related to extending and embedding Tcl, and to bundling extensions and scripts into packages.</p> <p class='mkup_p'>The Tcl community is an exceedingly friendly one. It's polite to try and figure things out yourself, but if you're struggling, we're more than willing to help. Here are some good places to get help:</p><UL class='mkup_UL'><li class='mkup_li'>The comp.lang.tcl newsgroup. Accessible via a newsreader, or <a rel='nofollow' class='mkup_a' href='https://groups.google.com/g/comp.lang.tcl'>Google Groups <span class='glyphicon glyphicon-globe' aria-hidden='true'></span></a>.</li><li class='mkup_li'>The <a rel='nofollow' class='mkup_a' href='http://www.tcl-lang.org'>Tcl developer site <span class='glyphicon glyphicon-globe' aria-hidden='true'></span></a> brings a great many resources together, ranging from basic tutorials to advanced development.</li><li class='mkup_li'>The <a rel='nofollow' class='mkup_a' href="https://wiki.tcl-lang.org">Wiki <span class='glyphicon glyphicon-globe' aria-hidden='true'></span></a> (this is where you are now!) has a great deal of useful code, examples and discussions of the finer points of Tcl usage.</li><li class='mkup_li'>On the page <a class='mkup_a mkup_known' href='/page/Ask%2C+and+it+shall+be+given%2E'>Ask, and it shall be given.</a> you can also ask questions and look at all previously asked questions and their answers.</li><li class='mkup_li'>If you need help right away, there is often someone on the #tcl channel on irc.freenode.net who can help you out, but please don't be impatient if no one can help you instantly - if you need that level of support, consider hiring a consultant. You can also use the <a class='mkup_a mkup_known' href='/page/TkChat'>TkChat</a> software for joining the chat.</li><li class='mkup_li'>There are several recommended books for those who wish to gain more in-depth knowledge of Tcl. <a class='mkup_a mkup_known' href='/page/Clif+Flynt'>Clif Flynt</a>, the original author of this tutorial is also the author of <a class='mkup_a mkup_known' href='/page/BOOK%3A+Tcl%2FTk%3A+A+Developer%27s+Guide'>Tcl/Tk: A Developer's Guide</a>. Other popular books: <a class='mkup_a mkup_known' href='/page/Book+Practical+Programming+in+Tcl+and+Tk'>Practical Programming in Tcl and Tk</a>. More can be found via the page for <a class='mkup_a mkup_known' href='/page/Online+books'>Online books</a> on the Wiki.</li></UL><p class='mkup_p'>A recent book on Tcl, one that describes the latest features, is <a class='mkup_a mkup_known' href='/page/BOOK+The+Tcl+Programming+Language'>The Tcl Programming Language</a> by <a class='mkup_a mkup_known' href='/page/Ashok+P%2E+Nadkarni'>Ashok P. Nadkarni</a>.</p> <h3 id='b5bed787163dbe4d52c32227d5ffb7841d5af7e1f8f6b79484c326c7656f6329' class='mkup_h2'>Credits</h3> <p class='mkup_p'>Thanks first and foremost to <a class='mkup_a mkup_known' href='/page/Clif+Flynt'>Clif Flynt</a> for making his material available under a BSD license. The following people also contributed:</p><UL class='mkup_UL'><li class='mkup_li'><a class='mkup_a mkup_known' href='/page/Neil+Madden'>Neil Madden</a></li><li class='mkup_li'><a class='mkup_a mkup_known' href='/page/Arjen+Markus'>Arjen Markus</a></li><li class='mkup_li'><a class='mkup_a mkup_known' href='/page/David+Welton'>David Welton</a></li><li class='mkup_li'><a class='mkup_a mkup_known' href='/page/PYK'>PYK</a></li></UL><p class='mkup_p'>Of course, we also welcome comments and suggestions about how it could be improved - or if it's great the way it is, we don't mind a bit of thanks, either!</p> <div class='mkup_centered'><p class='mkup_p'><b class='mkup_b'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Index'>Index</a></b> | <b class='mkup_b'><a class='mkup_a mkup_known' href='/page/Tcl+Tutorial+Lesson+0a'>Next lesson</a></b></p></div> </div> </div> <div class='row'> <div class='col-xs-12'> <div class='Footer'>Updated 2023-07-17 15:45:40</div> </div> </div> </div> <!-- jQuery library --> <script src='https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js'></script> <script src='https://cdnjs.cloudflare.com/ajax/libs/jquery.tablesorter/2.31.0/js/jquery.tablesorter.combined.js'></script> <!-- Latest compiled JavaScript --> <script src='https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js'></script> <script type='text/javascript' src='/scripts/nikit.js'></script> <script type='text/javascript' src='/scripts/sh_main.js'></script> <script type='text/javascript' src='/scripts/sh_tcl.js'></script> <script type='text/javascript' src='/scripts/sh_c.js'></script> <script type='text/javascript' src='/scripts/sh_cpp.js'></script> <!-- <script src='https://www.google.com/recaptcha/api.js'></script> --> <script src='https://hcaptcha.com/1/api.js'></script> <script>var clipboard = new ClipboardJS('.copybtn', { text: function(trigger) { return document.querySelector(trigger.getAttribute('data-clipboard-target')).textContent + '\n'; } }); sort_tables(); </script> </body> </html>