I'll try and explain what I'm hoping to do. Thank you in advance for your help.

I need to know how to create a form which once submitted:

1. remains in the same window
2. creates a frame set
3. the top frame is very small only enough for a top header - which will have a link back to the main site and a frame canceler
4. the bottom and larger frame shows the user's landing page (which is already created)

I've been searching all over to find a form that works. I found one but it's not showing the bottom frame.

here is the example code


Code:
#!/usr/bin/perl	

###################################################################
# Variables - Change these to match your site.
###################################################################
$home = 'http://www.example.com';	
$title = 'Test';
$body = 'TEXT=000000 LINK=DD8613 VLINK=DD8613 ALINK=DD8613 topmargin=0 leftmargin=0 toppadding=12';

###################################################################
# Do not touch these this part of the script.
###################################################################

	if ($ENV{'REQUEST_METHOD'} eq 'GET') {
        	$buffer = $ENV{'QUERY_STRING'};
	}	
	else {
        	read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
	}



	@pairs = split(/&/, $buffer);
	foreach $pair (@pairs) {
        	($name, $value) = split(/=/, $pair);
        	$value =~ tr/+/ /;
        	$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
        	$FORM{$name} = $value;
	}
	
	if ($FORM{'source'}) { $source = $FORM{'source'}; }
	if ($FORM{'target'}) { $target = $FORM{'target'}; }
	
	print "Content-type: text/html\n\n";
	&ReadParse;

#####################################################################
# This is the frame part, be careful if you want to change anything.
#####################################################################

if ($in{'action'} eq '') {
  $in{'action'} = "main";
} # End if

if ($in{'action'} eq 'main') {
	
	print "<HTML><HEAD><TITLE>$title - Visiting a link</TITLE></HEAD>\n";
	print "<FRAMESET rows=\"30,*\" marginwidth=0 marginheight=0 framespacing=0 frameborder=no border=0>\n";
	print "<FRAME marginwidth=0 marginheight=0 src=\"$home/cgi-bin/main.cgi?action=top&source=$source&target=$target\" scrollbars=no scrolling=no framespacing=0 frameborder=no border=0>\n";
	print "<FRAME marginwidth=0 marginheight=0 src=\"http://$target\" framespacing=0 frameborder=no border=0>\n";
	print "</FRAMESET>\n";
	print "<NOFRAMES>\n";
	print "<h1 align=center>Ops!</h1>\n";
	print "This document is designed to be viewed using
Frame features. If you are seeing this message, please consider
upgrading to a frames-compatible browser.";
	print "</NOFRAMES></HTML>\n";
}

#####################################################################
# This is the top part, be careful if you want to change anything.
#####################################################################

elsif ($in{'action'} eq 'top') {
	
	print "<HTML><HEAD><TITLE>$title - Visiting a link</TITLE></HEAD>\n";
	print "<body $body>\n";
	print "<left><a href=\"$home/$source\" target=\"_top\"><font size=2 face=\"Arial, Helvetica, sans-serif\">Return</font></a>\n";
	print " | <a href=\"http://$target\" target=\"_top\"><font size=2 face=\"Arial, Helvetica, sans-serif\">Remove This Frame</font></a>\n";
        print "</left>\n";
	print "</body></html>\n";
}

###############################################
# READPARSE FUNCTION DO NOT TOUCH
###############################################
sub ReadParse { local (*in) = @_ if @_; 
local ($i, $key, $val); if ( $ENV{'REQUEST_METHOD'} eq "GET" ) 
{
$in = $ENV{'QUERY_STRING'}; 
} 
elsif ($ENV{'REQUEST_METHOD'} eq "POST") 
{ 
read(STDIN,$in,$ENV{'CONTENT_LENGTH'}); 
} 
else 
{ 
# Added for command line debugging 
# Supply name/value form data as a command line argument 
# Format: name1=value1\&name2=value2\&... 
# (need to escape & for shell) 
# Find the first argument that's not a switch (-) 

$in = ( grep( !/^-/, @ARGV )) [0];
$in =~ s/\\&/&/g; } @in = split(/&/,$in);

 foreach $i (0 .. $#in) { 
# Convert plus's to spaces 

$in[$i] =~ s/\+/ /g; 
# Split into key and value. 
($key, $val) = split(/=/,$in[$i],2); 
# splits on the first =. 
# Convert %XX from hex numbers to alphanumeric 
$key =~ s/%(..)/pack("c",hex($1))/ge; 
$val =~ s/%(..)/pack("c",hex($1))/ge; 

# Associate key and value. \0 is the multiple separator 
$in{$key} .= "\0" if (defined($in{$key})); 
$in{$key} .= $val; } return length($in); }

The link used to call the cgi script is below:

Code:
<a href="http://www.example.com/cgi-bin/main.cgi?source=index.html&=www.google.com">Link Text</a>
Thank you for your help!