| Line | |
|---|
| 1 | #!./perl
|
|---|
| 2 |
|
|---|
| 3 | BEGIN {
|
|---|
| 4 | chdir 't';
|
|---|
| 5 | @INC = '../lib';
|
|---|
| 6 | require './test.pl';
|
|---|
| 7 | }
|
|---|
| 8 |
|
|---|
| 9 | print "1..7\n";
|
|---|
| 10 |
|
|---|
| 11 | {
|
|---|
| 12 | package TieAll;
|
|---|
| 13 | # tie, track, and report what calls are made
|
|---|
| 14 | my @calls;
|
|---|
| 15 | sub AUTOLOAD {
|
|---|
| 16 | for ($AUTOLOAD =~ /TieAll::(.*)/) {
|
|---|
| 17 | if (/TIE/) { return bless {} }
|
|---|
| 18 | elsif (/calls/) { return join ',', splice @calls }
|
|---|
| 19 | else {
|
|---|
| 20 | push @calls, $_;
|
|---|
| 21 | # FETCHSIZE doesn't like undef
|
|---|
| 22 | # if FIRSTKEY, see if NEXTKEY is also called
|
|---|
| 23 | return 1 if /FETCHSIZE|FIRSTKEY/;
|
|---|
| 24 | return;
|
|---|
| 25 | }
|
|---|
| 26 | }
|
|---|
| 27 | }
|
|---|
| 28 | }
|
|---|
| 29 |
|
|---|
| 30 | tie $x, 'TieAll';
|
|---|
| 31 | tie @x, 'TieAll';
|
|---|
| 32 | tie %x, 'TieAll';
|
|---|
| 33 |
|
|---|
| 34 | {our $x;}
|
|---|
| 35 | is(TieAll->calls, '', 'our $x has no runtime effect');
|
|---|
| 36 |
|
|---|
| 37 | {our ($x);}
|
|---|
| 38 | is(TieAll->calls, '', 'our ($x) has no runtime effect');
|
|---|
| 39 |
|
|---|
| 40 | {our %x;}
|
|---|
| 41 | is(TieAll->calls, '', 'our %x has no runtime effect');
|
|---|
| 42 |
|
|---|
| 43 | {our (%x);}
|
|---|
| 44 | is(TieAll->calls, '', 'our (%x) has no runtime effect');
|
|---|
| 45 |
|
|---|
| 46 | {our @x;}
|
|---|
| 47 | is(TieAll->calls, '', 'our @x has no runtime effect');
|
|---|
| 48 |
|
|---|
| 49 | {our (@x);}
|
|---|
| 50 | is(TieAll->calls, '', 'our (@x) has no runtime effect');
|
|---|
| 51 |
|
|---|
| 52 |
|
|---|
| 53 | $y = 1;
|
|---|
| 54 | {
|
|---|
| 55 | my $y = 2;
|
|---|
| 56 | {
|
|---|
| 57 | our $y = $y;
|
|---|
| 58 | is($y, 2, 'our shouldnt be visible until introduced')
|
|---|
| 59 | }
|
|---|
| 60 | }
|
|---|
Note:
See
TracBrowser
for help on using the repository browser.