#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" } } }