Home Accessibility Courses Twitter The Mouth Facebook Resources Site Map About Us Contact
How not to write Perl?

You can write a piece of code that resembles a Picasso ... or a piece of code that resembles a dog's dinner ... in Perl. And, rush job yesterday, I wanted to analyse a web access log file and find the number of unique visiting hosts listed. Here's what I came up with:

open (FH,"t09");
while (<FH>) {
  ($j)=split;
  $k{$j}++;
}
@s = keys(%k);
print @s+0,"\n";
foreach $host(sort {$k{$a} <=> $k{$b}} @s) {
  print "$k{$host} $host\n";
}


VERY quick. And VERY dirty, but it works:

[root@p15161732 logs]# perl t09d
291
1 84.16.235.40
1 62.31.153.127
1 86.6.163.203
1 213.40.135.44
[etc]
17 74.6.8.73
25 86.164.206.136
28 194.83.245.226
32 86.151.173.104
55 217.44.22.70
77 82.46.84.146
302 82.33.81.221
[root@p15161732 logs]#


So that's 291 unique hosts, and also some stats on who they are / the distribution of hits.

Why do I question whether or not this is good Perl? Because it will be VERY HARD to maintain later on. Variable names are not descriptive. No comments. No data validation. No checking to see if the input file actually exists. No report on the output as to what it is. No copyright statement / author notes. And that's just or starters.

For a one off - strictly a one off - these things probably don't matter; after all, Perl is the PRACTICAL extraction and reporting language and it did a very practical job of extracting what I needed here!

Learn Perl
The web page I was analysing
(written 2008-01-15, updated 2008-01-16)

 
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
P210 - Perl - Topicalization and Special Variables
  [4301] Perl - still a very effective language indeed for extracting and reporting - (2014-09-20)
  [3449] Apache Internal Dummy Connection - what is it and what should I do with it? - (2011-09-19)
  [2972] Some more advanced Perl examples from a recent course - (2010-09-27)
  [2876] Different perl examples - some corners I rarely explore - (2010-07-18)
  [2833] Fresh Perl Teaching Examples - part 2 of 3 - (2010-06-27)
  [1922] Flurinci knows Raby Lae PHP and Jeve - (2008-12-04)
  [1860] Seven new intermediate Perl examples - (2008-10-30)
  [1829] Dont bother to write a Perl program - (2008-10-10)
  [1728] A short Perl example - (2008-07-30)
  [1705] Environment variables in Perl / use Env - (2008-07-11)
  [1704] Finding operating system settings in Perl - (2008-07-10)
  [1444] Using English can slow you right down! - (2007-11-25)
  [1289] Pure Perl - (2007-08-03)
  [1232] Bathtub example - (2007-06-14)
  [1221] Bathtubs and pecking birds - (2007-06-07)
  [1136] Buffering output - why it is done and issues raised in Tcl, Perl, Python and PHP - (2007-04-06)
  [969] Perl - $_ and @_ - (2006-12-07)
  [639] Progress bars and other dynamic reports - (2006-03-09)
  [493] Running a Perl script within a PHP page - (2005-11-12)


Back to
Comments on proposed Asda Superstore for Melksham
Previous and next
or
Horse's mouth home
Forward to
Extracting information from a file of records
Some other Articles
Summer Ball at Bowood - Saturday 12th July 2008
Buses from Well House Manor, Melksham, to Bath
Handling Binary data (.gif file example) in Perl
Extracting information from a file of records
How not to write Perl?
Comments on proposed Asda Superstore for Melksham
Ongoing Image Copyright Issues, PHP and MySQL solutions
Script to present commonly used images - PHP
Flooding by Asda-s proposed new supermarket
Web page (http) error status 405
4300 posts, page by page
Link to page ... 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86 at 50 posts per page


This is a page archived from The Horse's Mouth at http://www.wellho.net/horse/ - the diary and writings of Graham Ellis. Every attempt was made to provide current information at the time the page was written, but things do move forward in our business - new software releases, price changes, new techniques. Please check back via our main site for current courses, prices, versions, etc - any mention of a price in "The Horse's Mouth" cannot be taken as an offer to supply at that price.

Link to Ezine home page (for reading).
Link to Blogging home page (to add comments).

You can Add a comment or ranking to this page

© WELL HOUSE CONSULTANTS LTD., 2014: Well House Manor • 48 Spa Road • Melksham, Wiltshire • United Kingdom • SN12 7NY
PH: 01144 1225 708225 • FAX: 01144 1225 899360 • EMAIL: info@wellho.net • WEB: http://www.wellho.net • SKYPE: wellho

PAGE: http://www.wellho.net/mouth/1508_How ... Perl-.html • PAGE BUILT: Thu Sep 18 15:30:25 2014 • BUILD SYSTEM: WomanWithCat