adhanlon
adhanlon

Reputation: 6539

Including perl cgi scripts in html

I want to write a header and footer perl scrip that will return the headers and footers of my individual webpages. I was assuming I would do some sort of include of that file in the part of the html file I want it to appear. Is that the way I should go about this, if so how do I do that? If anyone has any other suggestions for better ways to do this, I'd be very interested. Thanks.

Upvotes: 1

Views: 1559

Answers (3)

Brian Rasmussen
Brian Rasmussen

Reputation: 116401

Have a look at Template Toolkit. It allows you to insert server side code, that is evaluated before returning the page, so you can easily add header/footer code to pages this way. The toolkit is easy to use and additional features can be implemented in Perl.

Upvotes: 3

mob
mob

Reputation: 118605

If your server supports it, check out server side includes. They don't necessarily have to be written in Perl.

If not, and your headers and footers are simple, consider writing them in Javascript. It is easy to include a Javascript script in your HTML code that will make a bunch of document.write calls and you'll be done.

If not, and your headers and footers are not simple, and if you don't know Javascript and if you might be a masochist, still consider using Javascript.

There are probably some other newer technologies to accomplish this that the young whippersnappers here can tell you about, but for me server-side includes and Javascript ain't broke.

Upvotes: 3

Alan Haggai Alavi
Alan Haggai Alavi

Reputation: 74232

Subclass CGI.pm and add custom methods. For example:

MyApp.pm

package MyCGI;

use warnings;
use strict;
use base qw( CGI );

sub page_header {
    my $self = shift;
    return $self->div( { 'id' => 'header' },
        $self->h1('Welcome to my home page') );
}

sub page_footer {
    my $self = shift;
    return $self->div( { 'id' => 'footer' },
        $self->tt('Copyright © 2010. All rights reserved.') );
}

sub content {
    my ( $self, $paragraph ) = @_;
    return $self->div( { 'id' => 'content' }, $self->p($paragraph) );
}

1;

page.pl

#!/usr/bin/env perl

use warnings;
use strict;
use MyCGI;

my $page = MyCGI->new();
print
    $page->header(),
    $page->start_html('My home page'),
    $page->page_header(),
    $page->content('My own content'),
    $page->page_footer(),
    $page->end_html();

Then, you can use MyCGI whenever you want the custom/subclassed methods.

Upvotes: 0

Related Questions