Term::ShellKit::Commands - Basic shell functions
> perl -Iblib/lib -MTerm::ShellKit -eshell "kit Dev" Term::ShellKit: Starting interactive shell; commands include help, exit. Activating Term::ShellKit::Commands Activating Term::ShellKit::Dev Term::ShellKit> require MyClass MyClass Term::ShellKit> show_package MyClass Package Stash for MyClass Subs: sub smee = "CODE(0x73fa4)" sub twiddle = "CODE(0xc8530)"
The following commands are available.
Load a Perl module or library.
require module
Reload any Perl modules which have changed since they were last loaded.
reload
You can use the shell reload command to read in changes to your modules while continuing to work in the same environment.
Start with the following code in MyObject.pm:
package MyObject; sub new { my $class = shift; bless { }, $class; } 1;
Then start your shell and load your module:
~> perl lib/Shell/Shell.pm Term::ShellKit: Starting interactive shell Term::ShellKit> require MyObject
You can now start creating instances of your class:
Term::ShellKit> $example = MyObject->new() $example = MyObject->new(): MyObject=HASH(0x1e5118)
Your class doesn't do anything else yet, so trying to call other methods on your new object will result in an error:
Term::ShellKit> $example->twiddle $example->twiddle: Failed. shell_cmd_method: shell_cmd_eval: Can't locate object method "twiddle" via package "MyObject" at (eval 12) line 1.
Let's define that method -- leave the shell running, and add the following method to your package:
sub twiddle { my $self = shift; return "Song and dance goes here..."; }
Then return to the shell and run the "reload" command to load your changes. You can now start calling your new method, even on objects that were created earlier:
Term::ShellKit> reload Term::ShellKit: reload MyObject.pm Term::ShellKit> $example->twiddle $example->twiddle: Song and dance goes here...
Subsequent additions or revisions to the module will be available the next time you run the "reload" command. (Note that if you remove a method from your module code, it will not be deleted from the live workspace; you'll need to quit and restart the shell to achieve this.)
If there's an error in your code, you'll get a message similar to this when you try to reload:
Term::ShellKit> reload reload: Failed. shell_cmd_method: Type of arg 1 to shift must be array (not return) at /tmp/MyObject.pm line 10, near ""Song and dance goes here...";"
To view the problematic line, you can copy and paste in the file and line number, taking advantage of the default alias that maps "at" to "show_file":
Term::ShellKit> at /tmp/MyObject.pm line 10 > show_file /tmp/MyObject.pm line 10 > show_file /tmp/MyObject.pm window 2 line 10 my $self = shift return "Song and dance goes here..."; }
If you need to see more of the code you can re-run the show_file command with a window argument that's larger than the default of 2, but that's generally enough to spot errors like semicolon missing from the above.
show_package package_name
> perl -Iblib/lib -MTerm::ShellKit -eshell "kit Dev" Term::ShellKit: Starting interactive shell; commands include help, exit. Activating Term::ShellKit::Commands Activating Term::ShellKit::Dev Term::ShellKit> show_package Carp Package Stash for Carp Scalars: $CarpLevel = "0" $MaxArgLen = "64" $MaxArgNums = "8" $MaxEvalLen = "0" $Verbose = "0" Arrays: @EXPORT = "confess, croak, carp" @EXPORT_FAIL = "verbose" @EXPORT_OK = "cluck, verbose" @ISA = "Exporter" Hashes: %EXPORT = "carp => 1, cluck => 1, confess => 1, croak => 1, verbose => 1" %EXPORT_FAIL = "&verbose => 1, verbose => 1" Subs: sub carp = "CODEREF" sub cluck = "CODEREF" sub confess = "CODEREF" sub croak = "CODEREF" sub export_fail = "CODEREF" sub longmess = "CODEREF" sub shortmess = "CODEREF" Term::ShellKit> exit
Term::ShellKit
To install Term::ShellKit, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Term::ShellKit
CPAN shell
perl -MCPAN -e shell install Term::ShellKit
For more information on module installation, please visit the detailed CPAN module installation guide.