14 print $ok ? "ok $test - $name\n" : "not ok $test - $name\n";
18 ok( $_ eq 'global', '$_ initial value' );
20 ok( $_ eq 'glabol', 's/// on global $_' );
24 ok( $_ eq 'local', 'my $_ initial value' );
26 ok( $_ eq 'lacol', 's/// on my $_' );
28 ok( $1 eq 'la', '// on my $_' );
29 ok( tr/c/d/ == 1, 'tr/// on my $_ counts correctly' );
30 ok( $_ eq 'ladol', 'tr/// on my $_' );
33 ok( $_ eq 'nested', 'my $_ nested' );
35 ok( $_ eq 'neste', 'chop on my $_' );
39 ok( $_ eq 'glabol', 'gains access to our global $_' );
41 ok( $_ eq 'ladol', 'my $_ restored' );
43 ok( $_ eq 'glabol', 'global $_ restored' );
45 ok( $_ eq 'global', 's/// on global $_ again' );
49 ok( $_ eq 22, 'our $_ is seen explicitly' );
51 ok( $_ eq 2, '...default chop chops our $_' );
53 ok( $1 eq 2, '...default match sees our $_' );
60 ok( $_ eq "foo", 'for my $_' );
62 ok( $1 eq "f", '...m// in for my $_' );
63 ok( our $_ eq 'global', '...our $_ inside for my $_' );
65 ok( $_ eq 'local', '...my $_ restored outside for my $_' );
66 ok( our $_ eq 'global', '...our $_ restored outside for my $_' );
70 ok( $_ eq "bar", 'for our $_' );
72 ok( $1 eq "b", '...m// in for our $_' );
74 ok( $_ eq 'global', '...our $_ restored outside for our $_' );
79 sub tmap1 { /(.)/; $buf .= $1 } # uses our $_
81 sub tmap2 { /(.)/; $buf .= $1 } # uses my $_
85 ok( /^[67]\z/, 'local lexical $_ is seen in map' );
86 { ok( our $_ eq 'global', 'our $_ still visible' ); }
87 ok( $_ == 6 || $_ == 7, 'local lexical $_ is still seen in map' );
88 { my $_ ; ok( !defined, 'nested my $_ is undefined' ); }
90 ok( $buf eq 'gxgx', q/...map doesn't modify outer lexical $_/ );
91 ok( $_ eq 'x', '...my $_ restored outside map' );
92 ok( our $_ eq 'global', '...our $_ restored outside map' );
93 map { my $_; ok( !defined, 'redeclaring $_ in map block undefs it' ); } 1;
95 { map { my $_; ok( !defined, 'declaring $_ in map block undefs it' ); } 1; }
97 sub tmap3 () { return $_ };
99 sub tmap4 () { return $_ };
100 my $x = join '-', map $_.tmap3.tmap4, 1 .. 2;
101 ok( $x eq '1globallocal-2globallocal', 'map without {}' );
105 sub tgrep1 { /(.)/; $buf .= $1 }
107 sub tgrep2 { /(.)/; $buf .= $1 }
111 ok( /^[89]\z/, 'local lexical $_ is seen in grep' );
112 { ok( our $_ eq 'global', 'our $_ still visible' ); }
113 ok( $_ == 8 || $_ == 9, 'local lexical $_ is still seen in grep' );
115 ok( $buf eq 'gygy', q/...grep doesn't modify outer lexical $_/ );
116 ok( $_ eq 'y', '...my $_ restored outside grep' );
117 ok( our $_ eq 'global', '...our $_ restored outside grep' );
120 sub tgrep3 () { return $_ };
122 sub tgrep4 () { return $_ };
123 my $x = join '-', grep $_=$_.tgrep3.tgrep4, 1 .. 2;
124 ok( $x eq '1globallocal-2globallocal', 'grep without {} with side-effect' );
125 ok( $_ eq 'local', '...but without extraneous side-effects' );
130 $s =~ /to(?{ ok( $_ eq 'toto', 'my $_ in code-match # TODO' ) })to/
131 or ok( 0, "\$s=$s should match!" );
132 ok( our $_ eq 'global', '...our $_ restored outside code-match' );
138 ok( $x eq "cba", 'reverse without arguments picks up $_ # TODO' );
144 ::ok( $::_ eq 'notmain', 'our $_ forced into main::' );
146 ::ok( $1 eq 'notmain', '...m// defaults to our $_ in main::' );
149 my $file = 'dolbar1.tmp';
150 END { unlink $file; }
152 open my $_, '>', $file or die "Can't open $file: $!";
155 ok( -s $file, 'writing to filehandle $_ works' );
158 open my $_, $file or die "Can't open $file: $!";
160 ok( $x eq "hello\n", 'reading from <$_> works' );