| |||||||||||
| |||||||||||
Use of a sub to avoid repeating code
Programming Principles example from a Well House Consultants training course
More on Programming Principles [link]
Source code: algo Module: Q101
# This Perl example shows you how you can use a sub to avoid # having to repeat a block of code. The algorithm to split a # piece of text into individual letters, eliminate spaces, and # join it back up again is needed several times, with a different # joing string sub wordsort { my ($incoming,$sep) = @_; @nlet = sort(map(lc,split(/\s*/,$incoming))); join($sep,@nlet); } open (FH,"stationtables.tsv"); @about = <FH>; for (@about) { ($name) = (split(/\t/))[1]; $nk = wordsort($name,""); # print ("$name - $nk\n"); $table{$name} = $nk; } while (1) { print "Word: "; chop ($lookfor = <STDIN>); $regex = wordsort($lookfor,".*"); for (sort keys(%table)) { if ($table{$_} =~ /$regex/) { print "$_ - $table{$_}\n"; } } } __END__ The program looks for a word in a place (station) name ... a Christmas quiz! Here are some examples of it running: bash-2.05b$ perl algo Word: Christmas King's Cross Thameslink - 'aceghiikklmnnorsssst Swinton (Gr Manchester) - ()aceeghimnnnorrssttw Word: Santa Adlington (Lancs) - ()aacdgillnnnost Aldermaston - aadelmnorst Ancaster - aacenrst Ardrossan South Beach - aaabcdehhnoorrssstu Ardrossan Town - aadnnoorrsstw Ashford International - aaadefhiilnnnoorrstt Ashford International (Eurostar) - ()aaaadeefhiilnnnooorrrrsstttu Banstead - aabdenst Barlaston - aablnorst Barnstaple - aabelnprst Blaenau Ffestiniog - aabeeffgiilnnostu Bramley (Hants) - ()aabehlmnrsty Burnley Manchester Road - aabcdeeehlmnnorrrstuy Canterbury East - aabceenrrsttuy Carshalton - aachlnorst Carshalton Beeches - aabcceeehhlnorsst Cheltenham Spa - aaceehhlmnpst Clacton on Sea - aaccelnnoost Clapham (North Yorkshire) - ()aacehhhiklmnooprrrsty Clarbeston Road - aabcdelnoorrst Cobham & Stoke d'Abernon - &'aabbcdeehkmnnooorst Dalston Kingsland - aaddgikllnnnosst Deansgate - aadeegnst Dumbarton East - aabdemnorsttu Earlswood (West Midlands) - ()aadddeeillmnoorssstww East Grinstead - aadeeginrsstt East Malling - aaegillmnst Elephant & Castle - &aaceeehllnpstt Euxton Balshaw Lane - aaabeehllnnostuwx Falkirk Grahamston - aaafghikklmnorrst Gainsborough Central - aabcegghilnnoorrstu Glasgow Central - aaceggllnorstw Hamilton Square - aaehilmnoqrstu Harrow & Wealdstone - &aadeehlnoorrstww Hatfield & Stainforth - &aadeffhhiilnorsttt Hayes & Harlington - &aaeghhilnnorsty Headstone Lane - aadeeehlnnost Lancaster - aacelnrst Langwith-Whaley Thorns - -aaeghhhillnnorsttwwy Leamington Spa - aaegilmnnopst Lelant Saltings - aaegilllnnsstt Leuchars (for St. Andrews) - ().aacdeefhlnorrrssstuw Llanbister Road - aabdeillnorrst Llansamlet - aaelllmnst London St Pancras Domestic - aaccddeilmnnnoooprssstt London Waterloo East - aadeellnnoooorsttw Maesteg (Ewenny Road) - ()aadeeeegmnnorstwy Maidstone Barracks - aaabcdeikmnorrsst Maidstone East - aadeeimnosstt Manchester Airport - aaceehimnoprrrstt Manchester Oxford Road - aacddeefhmnooorrrstx Manchester Piccadilly - aacccdeehiillmnprsty Manchester United FC Halt - aaccdeeefhhilmnnrstttu Manchester Victoria - aacceehiimnorrsttv Market Rasen - aaeekmnrrst Mountain Ash - aahimnnostu Newark Castle - aaceeklnrstw Newton (Lanarks) - ()aaeklnnnorstw North Walsham - aahhlmnorstw Oakengates - aaeegknost Pontarddulais - aaddilnoprstu Pontefract Tanshelf - aaceeffhlnnoprsttt Prestwick International Airport - aaaceeiiiiklnnnoopprrrrsttttw Queenstown Road (Battersea) - ()aaabdeeeennooqrrsstttuw Rhoose Cardiff International Airport - aaaacdeeffhiiiilnnnooooprrrrrsttt Rowlands Castle - aacdellnorsstw Salford Central - aacdefllnorrst Sanderstead - aaddeenrsst Seaforth & Litherland - &aadeefhhillnorrstt Seaton Carew - aaceenorstw Southampton Airpt Parkway - aaaahikmnooppprrstttuwy Southampton Central - aacehlmnnooprstttu St Albans - aablnsst St Albans Abbey - aaabbbelnssty St Andrews Road - aaddenorrsstw St Annes-on-the-Sea - ---aaeeehnnnossstt St Leonards Warrior Square - aaadeeilnooqrrrrrssstuw St Margarets (Gr London) - ()aadegglmnnoorrrsstt St Pancras International - aaaaceiilnnnnoprrssttt Stansted Airport - aadeinoprrssttt Stapleton Road - aadelnooprstt Stranraer - aaenrrrst Stratford-upon-Avon - --aadfnnoooprrsttuv Strathcarron - aachnorrrstt Streatham Common - aacehmmmnoorstt Sutton Parkway - aaknoprsttuwy Talsarnau - aaalnrstu Walthamstow Central - aaacehllmnorstttww Walthamstow Queen's Road - 'aaadeehlmnooqrssttuww Walton-on-Thames - --aaehlmnnoosttw Wandsworth Road - aaddhnoorrstww Wanstead Park - aaadeknprstw Watton-at-Stone - --aaennoosttttw West Hampstead Thameslink - aaadeeehhiklmmnpssstttw Westgate-on-Sea - --aaeeegnossttw Whatstandwell - aadehllnsttww Ystrad Mynach - aacdhmnrstyy Ystrad Rhondda - aadddhnorrsty Word: Learn about this subject
This module and example are covered on the following public courses:
* Learning to program in PHP * Learning to program in Python * Learning to Program in Java * Learning to program in Lua * Learning to program in Ruby * Learning to program in Tcl * Learning to Program in C * Learning to program in C and C++ * Learning to program in Perl * Learning to program in PHP * Learning to program in C and C++ Also available on on site courses for larger groups Books covering this topic
Yes. We have over 700 books in our library. Books
covering all the subjects we teach are listed here and when you've selected a
relevant book we'll link you on to Amazon to order.
Other Examples
This example comes from our "Programming Principles" training module. You'll find a description of the topic and some
other closely related examples on the "Programming Principles" module index page.
Full description of the source code
You can learn more about this example on the training courses listed on this page,
on which you'll be given a full set of training notes.
Many other training modules are available for download (for limited use) from our download centre under an Open Training Notes License. Other resources
• Our Solutions centre provides a number of longer technical articles.
• Our Opentalk forum archive provides a question and answer centre. • The Horse's mouth provides a daily tip or thought. • Further resources are available via the resources centre. • All of these resources can be searched through through our search engine • And there's a global index here. Purpose of this website
This is a sample program, class demonstration or answer from a
training course. It's main purpose
is to provide an after-course service to customers who have attended our
public private or
on site courses, but the examples are made
generally available under conditions described below.
Web site author
Conditions of use
Past attendees on our training courses are welcome to use individual
examples in the course of their programming, but must check
the examples they use to ensure that they are suitable for their
job. Remember that some of our examples show you how not to do
things - check in your notes. Well House Consultants take no responsibility
for the suitability of these example programs to customer's needs.
This program is copyright Well House Consultants Ltd. You are forbidden from using it for running your own training courses without our prior written permission. See our page on courseware provision for more details. Any of our images within this code may NOT be reused on a public URL without our prior permission. For Bona Fide personal use, we will often grant you permission provided that you provide a link back. Commercial use on a website will incur a license fee for each image used - details on request. |
| ||||||||||
PH: 01144 1225 708225 • EMAIL: info@wellho.net • WEB: http://www.wellho.net • SKYPE: wellho PAGE: http://www.wellho.net/resources/ex.php4 • PAGE BUILT: Sun Oct 11 14:50:09 2020 • BUILD SYSTEM: JelliaJamb |