Home Accessibility Courses Twitter The Mouth Facebook Resources Site Map About Us Contact
 
Python and Tcl - public course schedule [here]
Private courses on your site - see [here]
Please ask about maintenance training for Perl, PHP, Lua, etc
 
When variables behave differently - Tie in Perl

Deep in the bowels of any programming language is code to store information into a variable, and get information back from that variable. And in a language that's dynamic in its memory allocation, there will also be code to construct and destroy variables.

Does that sound a bit "object oriented". Intentionally so. And in Perl, you can actually get at the four pieces of code methods used and replace them for individual variables if you wish to do so - thus creating your own variables which behave in a different way to default.

Here's a program that appears to overwrite a variable 12 times ...

  for ($k=0;$k<13;$k++) {
    $hand = $pack[$k];
    }


And then appears to go into an infinite loop printing out the last item stored:

  while ($thiscard = $hand) {
    print "playing card $thiscard\n";
    }


It doesn't actually work like that, though, in my example - complete source [here] - because of two extra lines I have added:

  use stack;
  tie $hand,"stack";


These two lines have replaced the standard behaviour of a scalar for the variable $hand - and in the file stack.pm I have defined a new constructor that sets up a list. In the "setter" I have stored each new value onto the end of that list, and in the "getter" I have removed an item from the end of the list. Thus making the variable $hand into a new way of handling a stack.

By replacing the pop with shift in stack.pm, I could turn the tie class into a queue variable - first in, first out, return flas when the queue is empty. This sort of thing is very clever, but you need to consider whether or not anyone who has to maintain the code late on will understand it.

Tieing can also be used on a scalar to make a variable persist from one run of a program to the next (by the simple means of reading and writing to a text file) - see [here] for the call and [here] for the definition. And tieing can be used for lists and hashes too. With a list, you could treat each line of a file as a member of a list ... with a hash you could use a unique key in a database table to be the hash key - so make your database selects, inserts and updates transparent to your code user.

You'll find a number of examples in the resources for our tieing module which we sometimes teach on custom courses (I covered it on one of last week's Perl courses) and I'll cover it on public Perl for Larger Projects courses - often at an "overview" level but also happy to go into some more detail is it's of specific use to any of the delegates. But if you're thinking of using tieing in a piece of production code - please consider maintainability and efficiency before you commit. Both of these concerns can be answered, but it's best to answer them early on and be aware of what you're doing.
(written 2011-08-28)

 
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
P304 - Perl - Tieing
  [3007] Setting up a matrix of data (2D array) for processing in your program - (2010-10-21)
  [2379] Making variables persistant, pretending a database is a variable and other Perl tricks - (2009-08-27)
  [2243] Changing a variable behaviour in Perl - tieing - (2009-06-16)


Back to
Journey home by public transport for a Bank Holiday
Previous and next
or
Horse's mouth home
Forward to
A review of the Summer Sunday extra trains on the TransWilts line
Some other Articles
If its Sunday, must it be Weymouth?
Handling binary data in Perl is easy!
Single and double quotes strings in Perl - what is the difference?
A review of the Summer Sunday extra trains on the TransWilts line
When variables behave differently - Tie in Perl
Journey home by public transport for a Bank Holiday
Perl - a quick reminder and revision. Test yourself!
Not multidimentional arrays - but lists of lists. Much more flexible. Perl!
Where do businessmen stay in Melksham?
Buses on the Cambridge Guided Busway
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).

You can Add a comment or ranking to this page

© WELL HOUSE CONSULTANTS LTD., 2019: 404 The Spa • Melksham, Wiltshire • United Kingdom • SN12 6QL
PH: 01225 708225 • EMAIL: info@wellho.net • WEB: http://www.wellho.net • SKYPE: wellho

PAGE: http://www.wellho.net/mouth/3409_Whe ... -Perl.html • PAGE BUILT: Sat May 27 16:49:10 2017 • BUILD SYSTEM: WomanWithCat