Andy Armstrong andy at hexten.net
Mon Nov 3 14:31:16 GMT 2008

On 3 Nov 2008, at 14:08, Dominic Thoreau wrote:
> Scope is always useful once you understand it - but can be nasty  
> when you don't.


> 'Course I could be wrong.....

Yup :)

I don't know where the 'test' subroutine comes from but I'm assuming
it's something like this:

     sub test($&) {
       my ( $msg, $sub ) = @_;

Your main problem is that the @ISA assignment in my_test_mod isn't
executed until after you attempt to instantiate my_test_mod. This works:

     #!/usr/bin/perl -w
     use strict;

     use Test::More tests => 2;

     sub test($&) {
       my ( $msg, $sub ) = @_;

     BEGIN {
       use_ok( 'My::Module' );    # contains a package called 'my_mod'

     package my_test_mod;
     our @ISA = qw( my_mod );

     package main;

     test 'object init' => sub {
       ok( my $object = my_test_mod->new(), 'init' );

As has already been said it's a good idea to name files according to the
main package that they provide. It's not mandatory but it's assumed by
lots of extant code.

Andy Armstrong, Hexten

More information about the london.pm mailing list