#use strict;
use warnings;
use Term::ReadLine;
my $prompt = "prompt> ";
my $prog = Term::ReadLine->new('Script');
$prog->ornaments(0);
while (defined (my $cmd = $prog->readline($prompt))) {
chomp $cmd;
# nothing
if ($cmd =~ /^\s*$/) { next }
# exit
if ($cmd =~ /^\s*exit\s*$/) { last }
# execute
eval $cmd;
warn $@ if $@;
print "\n"
}
sub command {
print "Special command";
}
####
VinsWorldcom@C:\Users\VinsWorldcom\tmp> perl script.pl
prompt> command
Special command
prompt> $var1 = "variable"
prompt> print $var1
variable
prompt> $var1 = "variable1"
prompt> print $var1
variable1
prompt> exit
VinsWorldcom@C:\Users\VinsWorldcom\tmp>
####
package MyPackage;
...
sub variables {
my %SKIP = (
# list var names that you want to ignore
);
for my $var (sort(keys(%MyPackage::))) {
if (defined(${$var}) && !defined($SKIP{$var})) {
print "\$$var = ${$var}\n"
}
}
}