in reply to sorting an array of objects (surely it should be easy!)

Whenever you get errors or warnings, I suggest you look up the perldiag manual page to see more verbose explanation. Or, you can put the use diagnostics; line near the top of your program. This way, you let Perl explains more detail about what's wrong or what might be wrong in your program. The first is really a warning message instead of an error (indicated by "(W)", while the second is a fatal error.
Use of reference "%s" as array index (W misc) You tried to use a reference as an array index; this probab +ly isn't what you mean, because references in numerical context tend to + be huge numbers, and so usually indicates programmer error. If you really do mean it, explicitly numify your reference, like so: $array[0+$ref]. This warning is not given for overloaded objects, either, because you can overload the numifi- cation and stringificat +ion operators and then you assumedly know what you are doing. Can't call method "%s" on unblessed reference (F) A method call must know in what package it's supposed to run. I +t ordinarily finds this out from the object reference you supply, but +you didn't supply an object reference in this case. A reference isn't a +n object reference until it has been blessed. See per- lobj.
The @unsorted array contains list of objects of GARD::Book class, when you pass it to the sort function, the $a and $b variables contain references to the correspondent elements in that array. So you simply say $a->function instead of $unsorted[$a]->function in the sort block.

Saying $a->function in the sort block is the same with $unsorted[SOME_INDEX]->function outside the block. When you say $unsorted[$a]->function in the sort block the following (more or less) happens:


Open source softwares? Share and enjoy. Make profit from them if you can. Yet, share and enjoy!