|
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 [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)
5708
Some other Articles
Summer Ball at Bowood - Saturday 12th July 2008Buses from Well House Manor, Melksham, to BathHandling Binary data (.gif file example) in PerlExtracting information from a file of recordsHow not to write Perl?Comments on proposed Asda Superstore for MelkshamOngoing Image Copyright Issues, PHP and MySQL solutionsScript to present commonly used images - PHPFlooding by Asda-s proposed new supermarketWeb page (http) error status 405
|
4106 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 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).
|
|