PTKSH(1)

πŸ’… PTKSH(1) β€” the perl/Tk doc page, but make it make sense

okay bestie, so this is ptksh(1) from the perl/Tk documentation and I'm gonna walk you through it like we're texting at 2am 🫢 because honestly? it's kind of iconic.


✨ NAME ✨

ptksh β€” a Perl/Tk script that gives you a whole graphical user interface for testing Perl/Tk commands and scripts. it's giving "interactive playground" and we're obsessed πŸ’–


🌸 SYNOPSIS 🌸

% ptksh  ?scriptfile?
... version information ...
ptksh> $b=$mw->Button(-text=>'Hi',-command=>sub{print 'Hi'})
ptksh> $b->pack
ptksh> o $b
... list of options ...
ptksh> help
... help information ...
ptksh> exit
%

like, literally just type ptksh and go off πŸ’… (optionally with a scriptfile, but more on that later).


πŸ¦‹ DESCRIPTION πŸ¦‹

So ptksh is a perl/Tk shell where you can enter perl commands interactively β€” the way that it's literally a live chat with your interpreter, no cap ✨

When you start ptksh, a MainWindow gets created automatically, and you also get a ptksh command window. You can reach the main window by typing commands at the ptksh> prompt in the command window, using the variable $mw πŸ‘‘

ptksh supports command line editing and history β€” press <Up> at the command prompt to pull up a history list. The last 50 commands you entered are saved, then reloaded into the history list the next time you start ptksh. persistence! slay πŸŽ€

ptksh also has some convenient commands for inspecting Tk widgets β€” those are below, keep reading bestie.

To exit ptksh use: exit.

🚨 Real talk: ptksh is *not* a full symbolic debugger. If you wanna debug perl/Tk programs at a low level, use the more powerful perl debugger instead. (Just enter O tk on the debugger's command line to start the Tk eventloop.) iykyk πŸ’€

πŸ”₯ FEATURES πŸ”₯

πŸŽ€ History

Press Up (the Up Arrow) in the perlwish window to obtain a gui-based history list. Press Enter on any history line to enter it into the perlwish window. Then hit return. So, for example, repeating the last command is UpEnterEnter ✨ You can quit the history window with Escape.

⚠️ NOTE: history is only saved if exit is "graceful" (i.e. by the exit command from the console or by quitting all main windows β€” NOT by interrupt). so pls don't rage-quit, your history is on the line 😭

🧚 Debugging Support

ptksh provides some convenience function to make browsing in perl/Tk widget easier β€” here's the whole menu, no gatekeeping:

  • ?, or h β€” displays a short help summary.
  • d, or x ?args, ...? β€” Dumps recursively arguments to stdout. (see Data::Dumper). You must have <Data::Dumper> installed to support this feature.

x was introduced for perl debugger compatibility. iykyk πŸ‘‘

  • p ?arg, ...? β€” appends "|\n" to each of it's arguments and prints it. If value is undef, '(undef)' is printed to stdout. not the dramatic undef moment we wanted but okay 🫠
  • o $widget ?-option ...? β€” prints the option(s) of $widget one on each line. If no options are given, all options of the widget are listed. See Tk::options for more details on the format and contents of the returned list.
  • o $widget /regexp/ β€” Lists options of $widget matching the regular expression regexp. regex girlies rise πŸ™ˆ
  • u ?class? β€” okay so this one has three moods:
    • If no argument is given, it lists the modules loaded by the commands you executed or since the last time you called u.
    • If argument is the empty string, it lists all modules that are loaded by ptksh.
    • If argument is a string, text, it tries to do a use Tk::Text;. highkey useful πŸ’œ

🌈 Packages

Ptksh compiles into package Tk::ptksh. Your code is eval'ed into package main. The coolness of this is that your eval code should not interfere with ptksh itself. isolation is self-care, periodt πŸ’…

⭐ Multiline Commands

ptksh will accept multiline commands. Simply put a \ character immediately before the newline, and ptksh will continue your command onto the next line. the way that it just works πŸ¦‹

πŸ“ Source File Support

If you have a perl/Tk script that you want to do debugging on, try running the command

ptksh> do 'myscript';

-- or (at the shell command prompt) --

% ptksh myscript

Then use the perl/Tk commands to try out different operations on your script. main character energy fr fr πŸ‘‘


πŸ’œ ENVIRONMENT πŸ’œ

Looks for your .ptksh_history in the directory specified by the $HOME environment variable ($HOMEPATH on Win32 systems). know your roots bestie 🏠


🌸 FILES 🌸

  • .ptksh_init β€” If found in the current directory it is read in an evaluated after the mainwindow $mw is created. .ptksh_init can contain any valid perl code. cute little startup ritual ✨
  • ~/.ptksh_history β€” Contains the last 50 lines entered in ptksh session(s). it's your diary but for commands πŸŽ€

πŸ’€ PITFALLS πŸ’€

It is best not to use my in the commands you type into ptksh. For example, my $v will make $v local just to the command or commands entered until Return is pressed. so like... your variable just evaporates 😭

For a related reason, there are no file-scopy my variables in the ptksh code itself (else the user might trounce on them by accident). protective king behavior honestly πŸ‘‘


πŸ™ˆ BUGS πŸ™ˆ

Tk::MainLoop function interactively entered, or sourced in an init or script file, will block ptksh. yes it will just sit there. do not pass go 🫠


πŸ¦‹ SEE ALSO πŸ¦‹

Tk perldebug


πŸ‘‘ VERSION πŸ‘‘

VERSION 2.03


🫢 AUTHORS 🫢

Mike Beller <beller@penvision.com>, Achim Bohnet <ach@mpe.mpg.de>

Copyright (c) 1996 - 1998 Achim Bohnet and Mike Beller. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.


and that's the whole page bestie πŸ’– this doc shipped as Tk804.036, dated 2024-01-12 β€” so like, yes, it's a lil vintage, but it ate and left no crumbs βœ¨πŸŽ€

πŸ“¦ where this page comes from