For 2023 - we are now fully retired from IT training. We have made many, many friends over 25 years of teaching about Python, Tcl, Perl, PHP, Lua, Java, C and C++ - and MySQL, Linux and Solaris/SunOS too. Our training notes are now very much out of date, but due to upward compatability most of our examples remain operational and even relevant ad you are welcome to make us if them "as seen" and at your own risk.
Lisa and I (Graham) now live in what was our training centre in Melksham - happy to meet with former delegates here - but do check ahead before coming round. We are far from inactive - rather, enjoying the times that we are retired but still healthy enough in mind and body to be active!
I am also active in many other area and still look after a lot of web sites - you can find an index ((here)) |
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 [493] Running a Perl script within a PHP page - (2005-11-12) [639] Progress bars and other dynamic reports - (2006-03-09) [969] Perl - $_ and @_ - (2006-12-07) [1136] Buffering output - why it is done and issues raised in Tcl, Perl, Python and PHP - (2007-04-06) [1221] Bathtubs and pecking birds - (2007-06-07) [1232] Bathtub example - (2007-06-14) [1289] Pure Perl - (2007-08-03) [1444] Using English can slow you right down! - (2007-11-25) [1704] Finding operating system settings in Perl - (2008-07-10) [1705] Environment variables in Perl / use Env - (2008-07-11) [1728] A short Perl example - (2008-07-30) [1829] Dont bother to write a Perl program - (2008-10-10) [1860] Seven new intermediate Perl examples - (2008-10-30) [1922] Flurinci knows Raby Lae PHP and Jeve - (2008-12-04) [2833] Fresh Perl Teaching Examples - part 2 of 3 - (2010-06-27) [2876] Different perl examples - some corners I rarely explore - (2010-07-18) [2972] Some more advanced Perl examples from a recent course - (2010-09-27) [3449] Apache Internal Dummy Connection - what is it and what should I do with it? - (2011-09-19) [4301] Perl - still a very effective language indeed for extracting and reporting - (2014-09-20) [4395] Preparing data through a little bit of Perl - (2015-01-15) [4682] One line scripts - Awk, Perl and Ruby - (2016-05-20) [4700] Obfurscated code - it might work, but is it maintainable? - (2016-07-02)
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
|
4759 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, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96 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).
|
|