12 # First we must set up some autoloader files
13 mkdir $dir, 0755 or die "Can't mkdir $dir: $!";
14 mkdir "$dir/auto", 0755 or die "Can't mkdir: $!";
15 mkdir "$dir/auto/Foo", 0755 or die "Can't mkdir: $!";
17 open(FOO, ">$dir/auto/Foo/foo.al") or die;
20 sub foo { shift; shift || "foo" }
25 open(BAR, ">$dir/auto/Foo/bar.al") or die;
28 sub bar { shift; shift || "bar" }
33 open(BAZ, ">$dir/auto/Foo/bazmarkhian.al") or die;
36 sub bazmarkhianish { shift; shift || "baz" }
41 # Let's define the package
46 sub new { bless {}, shift };
52 print "not " unless $foo->foo eq 'foo'; # autoloaded first time
55 print "not " unless $foo->foo eq 'foo'; # regular call
58 # Try an undefined method
62 print "not " unless $@ =~ /^Can't locate/;
65 # Used to be trouble with this
70 print "not " unless $@ =~ /oops/;
73 # Pass regular expression variable to autoloaded function. This used
74 # to go wrong because AutoLoader used regular expressions to generate
75 # autoloaded filename.
77 print "not " unless $1 eq 'foo';
80 print "not " unless $foo->bar($1) eq 'foo';
83 print "not " unless $foo->bar($1) eq 'foo';
86 print "not " unless $foo->bazmarkhianish($1) eq 'foo';
89 print "not " unless $foo->bazmarkhianish($1) eq 'foo';
92 # test recursive autoloads
93 open(F, ">$dir/auto/Foo/a.al") or die;
97 sub a { print "ok 11\n"; }
102 open(F, ">$dir/auto/Foo/b.al") or die;
105 sub b { print "ok 10\n"; }
113 return unless $dir && -d $dir;
114 unlink "$dir/auto/Foo/foo.al";
115 unlink "$dir/auto/Foo/bar.al";
116 unlink "$dir/auto/Foo/bazmarkhian.al";
117 unlink "$dir/auto/Foo/a.al";
118 unlink "$dir/auto/Foo/b.al";
119 rmdir "$dir/auto/Foo";