I'm trying to use perl as my web server for a specific address:port number, 10.x.x.x:portNumber, while also having it show what's in my index.html file by default. However, perl does not show the contents of index.html when I run 10.x.x.x:portNumber in my browser. How can I get perl to read from a file?
This is the code I'm working with for this problem.
#!/usr/bin/perl
{
package MyWebServer;
use HTTP::Server::Simple::CGI;
use base qw(HTTP::Server::Simple::CGI);
my %dispatch = (
'/' => &resp_hello,
);
sub handle_request {
my $self = shift;
my $cgi = shift;
my $path = $cgi->path_info();
my $handler = $dispatch{$path};
if (ref($handler) eq "CODE") {
print "HTTP/1.0 200 OK
";
$handler->($cgi);
} else {
print "HTTP/1.0 404 Not found
";
print $cgi->header,
$cgi->start_html('Not found'),
$cgi->h1('Not found'),
$cgi->end_html;
}
}
sub resp_hello {
my $cgi = shift; # CGI.pm object
return if !ref $cgi;
my $who = $cgi->param('name');
print $cgi->header,
$cgi->start_html("Hello"),
$cgi->h1("Hello Perl"),
$cgi->end_html;
}
}
my $pid = MyWebServer->new(XXXX)->background();
print "Use 'kill $pid' to stop server.
";
Thank you.
See Question&Answers more detail:os