=pod

=head1 NAME

Package::Transporter::Generator::Potential::Interactive - AUTOLOAD interactive (write missing subroutines as the running program encounters them)

=head1 SYNOPSIS

	use strict;
	use Package::Transporter sub{eval shift}, sub {
		$_[0]->register_potential('::Interactive', 'FOR_ANY');
	};
	
	sub hello_world() { print "Hello World.\n"; }
	print STDOUT hallo_welt();
	
	Package::Transporter->new(sub{eval shift}); # access lexicals;
	exit(0);

=head1 DESCRIPTION

Problem: at the end of a long computation, the program crashed due to a missing or misspelled subroutine. Solution: Correct the problem interactively while the program is still running.

Starts a simple interactive shell as shown below. Requires an interactive TTY. A fair attempt is made not to suffer from interactive syntax errors.

Chances are that you can recover from an otherwise fatal situation, but keep in mind that any kind of recovery has to be practiced.

=head2 Sample Screen Output

	#----------------------------------------------------------------------------
	# The subroutine 'hallo_welt' is missing in package 'main'.
	# You can write it now if you're adventurous.
	# Menu: [1:Help] [2:Alias] [3:transport] [4:cluck] [5:Dumper(@_)] [6:Give up]
	# Please enter 1-6 followed by Enter: 1
	#
	# 1: Display this text.
	# 2: Meant for fixing typing mistakes. Enter the real subroutine name.
	# 3: Paste the $code to be passed to $self->transport(\$code)
	# 4: Execute Carp::cluck to see where the request is coming from.
	# 5: Print the arguments with Data::Dumper(\@_);
	# 6: Indicate failure and eventually die().
	#
	# For further details see Package::Transporter::Generator::Potential::Interactive
	#----------------------------------------------------------------------------
	# Menu: [1:Help] [2:Alias] [3:transport] [4:cluck] [5:Dumper(@_)] [6:Give up]
	# Please enter 1-6 followed by Enter: 2
	# Enter the name of an existing subroutine:
	hello_world
	Hello World.

=head1 RELATED MODULES

This module is different from REPL in that no error condition was triggered, yet.

Carp::REPL, Devel::ebug, Devel::REPL

=head1 ANYTHING ELSE

Please see the documentation of the upstream package L<Package::Transporter>.

=cut
