web development in perl
DESCRIPTION
This was my presentation during WebOSS '07, the first Web and Open Source Technology Conference in Kolkata, on 13th October 2007TRANSCRIPT
April 12, 2023 Naveen Gupta 1
Web Development in Perl
WEB DEVELOPMENT IN Perl
Naveen Gupta [email protected]
April 12, 2023 Naveen Gupta 2
Web Development in Perl
• AGENDA
– Introduction to Web Development & Perl– Perl Powered Sites/Application– Basic Web Programming in Perl– CGI Programming in Perl– Creating HTML Forms– mod_perl– Templating Systems in Perl– Web 2.0 Applications in Perl– Perl vs PHP - A Tale of 2 Languages
April 12, 2023 Naveen Gupta 3
Web Development in Perl
• Introduction to Web Development
What is Web Dev? – Development of websites, internet applications, e-
commerce sites, social networks etc.
– Includes Web Designing, Content Development, client/server side coding, Web Server configuration
– Flexible Model, easy to adopt to, Barriers to entry very low
– Contributing Factors - Propagation of Open Source Technologies, WYSIWYG Tools, Internet Awareness
– Killer Apps – Google Docs, Flickr, WordPress, PhpBB, WikiMedia, YouTube and millions others
April 12, 2023 Naveen Gupta 4
Web Development in Perl
• Dominant Technologies
– C, C++, Pascal, Shell Script– ASP– JAVA, J2EE and related Frameworks– Perl with or without CGI– PHP– .NET – C#, VB.NET– Python– Ruby on Rails– ColdFusion
April 12, 2023 Naveen Gupta 5
Web Development in Perl
• Introduction to Perl
– Created by Larry Wall in 1987– Interpreted, Scripting Language– C - like syntax– Best of C, awk and sed– Best language for Text Manipulation/ Data Processing– Swiss Army knife for SysAdmins, Programmers– Supports modules, OO, DB interaction, pointers, regular
expressions, multithreading, sockets, MVC frameworks– Highly Portable, well documented
April 12, 2023 Naveen Gupta 6
Web Development in Perl
• Perl and the WEB
– De facto language for CGI Programs– Made popular by Matt’s Script Archive– Easy to build and maintain– Wide acceptance of LAMP framework – Linux, Apache, MySQL,
PHP/Perl/Python/Ruby– Great DB support via DBI set of Modules– Strength of Perl – CPAN, Comprehensive Perl Archive
Network– Hands down winner with the advent of mod_perl, FastCGI,
Catalyst, Moose etc.
April 12, 2023 Naveen Gupta 7
Web Development in Perl
• How to get Perl?
- For *NIX Platforms – Included with almost every Linux, BSD, Solaris, OS X installation. Source can be can be downloaded from http://www.perl.org and compiled using “gcc”. RPMs are also available.
- For Windows Platforms – Installation Binary distributed by http://www.activestate.com as ActivePerl. Yet, complete LAMP installations distributed by http://www.apachefriends.org, http://www.apache.org, http://www.indigostar.com etc. are most popular. Complete listing can be found at http://www.perl.org/ports
April 12, 2023 Naveen Gupta 8
Web Development in Perl
Perl Powered Sites/Applications
April 12, 2023 Naveen Gupta 9
Web Development in Perl
My First Web Program in Perl
#!/usr/bin/perl
print “Content-type:/text/html\n\n”;
print “Hello World!<br>”;
April 12, 2023 Naveen Gupta 10
Web Development in Perl
Adding a Bit of `Perl`
#!/usr/bin/perl
print “Content-type:/text/html\n\n”;
my $time=localtime(time);
print “Today is $time <br>”;
foreach my $key (sort keys %ENV){print qq{$key = $ENV{$key} <br>};
}
April 12, 2023 Naveen Gupta 11
Web Development in Perl
Jazz it up with a little HTML
#!/usr/bin/perl
print “Content-type:/text/html\n\n”;
print “<h1>Welcome to my First Perl Web page</h1>”;print “Perl is a great language!<br>”;print “It can create killer websites too!<br>”;print “Wanna see how?”;
April 12, 2023 Naveen Gupta 12
Web Development in Perl
Here Document
#!/usr/bin/perl
print “Content-type:/text/html\n\n”;
print<<HTML;
<h1>Welcome to my First Perl Web page</h1>Perl is a great language!<br>It can create killer websites too!<br>Wanna see how?
HTML
April 12, 2023 Naveen Gupta 13
Web Development in Perl
Going Dynamic with CGI#!/usr/bin/perl
use CGI;use strict;
my $cgi=new CGI;
print $cgi->header();print $cgi->start_html(-title=>’First CGI.pm program’, -meta=>{‘keywords’=>’perl cgi’, ‘copyright’=>’WebOSS ‘07’}, -style=>{‘src’=>’style.css’}, -BGCOLOR=>’blue’);
contd….
April 12, 2023 Naveen Gupta 14
Web Development in Perl
…contd
Going Dynamic with CGI
print $cgi->h1(“Welcome to a CGI APP!”);print “Your IP Address is : ”.$ENV{‘REMOTE_ADDR’}.“<br>”;print “You have been directed here from:
$ENV{‘HTTP_REFERER’}” ;print $cgi->a({-href=>’http://search.cpan.org’, -target=>’_blank’}, “Go to CPAN!”);print $cgi->end_html;
April 12, 2023 Naveen Gupta 15
Web Development in Perl
• The Power of mod_perl“…mod_perl is more than CGI scripting on steroids. It is a whole new way to create dynamic content by utilizing the full power of the Apache web server to create stateful sessions, customized user authentication systems, smart proxies and much more. Yet, magically, your old CGI scripts will continue to work and work very fast indeed. With mod_perl you give up nothing and gain so much! …” – Lincoln Stein, Author – CGI.pm
- Perl Interpreter embedded in Apache
- Overcomes one-process-per-request limitation of CGI, 100x faster!
- Write Apache modules in Perl instead of C
- Hundreds of Modules available in CPAN
- Numerous Application Frameworks, Templating Systems
- Configure Apache’s httpd.conf via Perl
April 12, 2023 Naveen Gupta 16
Web Development in Perl
• Perl Templating Systems
– HTML::Mason
– Template Toolkit
– HTML::Template
– SSI using mod_include or Apache::SSI module
Why use Templating System?
• Consistency of Appearance
• Reusability
• Abstraction between logic and design
• Division of Labour
April 12, 2023 Naveen Gupta 17
Web Development in Perl
• Web 2.0 Apps in Perl CGI::Ajax
• Object Oriented module by Brian C. Thomas
• Eliminates the need to write JS for AJAX Calls
• Generates JS Functions from output by Perl subroutines
• Can be implemented in large projects
HTML::TagCloud
• Generates Tag Clouds, with different font sizes
• CSS Based
• Add method takes 3 arguments – a) Tag Name
b) URL to link to
c) Weight
April 12, 2023 Naveen Gupta 18
Web Development in Perl
WEB DEVELOPMENT IN Perl
Perl vs PHP
April 12, 2023 Naveen Gupta 19
Web Development in Perl
Perl PHPPURPOSE/
UTILITYMulti-purpose, primarily for text
pocessing, equally suited for sysadmin and web apps
Made primarily for WEB. Can do CLI and other tasks.
LEARNING CURVE
Easier than C, JAVA, .NET Easier than Perl
API/ LIBRARY SUPPORT
48606 active modules on CPAN and many others elsewhere
PEAR and PECL, both from http://www.php.net
DOCUMENTATION
Perldoc, http://perldoc.perl.org , CPAN
http://www.php.net
APACHE INTEGRATION
mod_perl, Fast CGI mod_php
April 12, 2023 Naveen Gupta 20
Web Development in Perl
Perl PHP
HTML EMBED Only with Modules like Mason, HTML::Template,
Template::Toolkit etc.
Yes, the main reason for its popularity
CMS / APPLICATIONS
AWStats, Slash Code, BugZilla WordPress, phpBB, Drupal, Coppermine,
phpMyAdmin
April 12, 2023 Naveen Gupta 21
Web Development in Perl
THANK YOU!
use Perl;