$v = @$g1;
$v = %$m2;
$v = %$g2;
+
+$v = ${"foo.bar"}+1;
+$v = ${"foo$m1"}+1;
+$v = ${"foo$g1"}+1;
EXPECT
Use of uninitialized value $m1 in scalar dereference at - line 5.
Use of uninitialized value $g1 in scalar dereference at - line 6.
Use of uninitialized value $g1 in array dereference at - line 9.
Use of uninitialized value $m2 in hash dereference at - line 10.
Use of uninitialized value $g2 in hash dereference at - line 11.
+Use of uninitialized value in addition (+) at - line 13.
+Use of uninitialized value $m1 in concatenation (.) or string at - line 14.
+Use of uninitialized value in addition (+) at - line 14.
+Use of uninitialized value $g1 in concatenation (.) or string at - line 15.
+Use of uninitialized value in addition (+) at - line 15.
########
use warnings 'uninitialized';
my ($m1, $v);
$v = abs($g2);
EXPECT
Use of uninitialized value $g1 in int at - line 5.
-Use of uninitialized value $g1 in int at - line 5.
-Use of uninitialized value $g2 in abs at - line 6.
Use of uninitialized value $g2 in abs at - line 6.
########
use warnings 'uninitialized';
Use of uninitialized value $g1 in subroutine prototype at - line 6.
Use of uninitialized value $g1 in bless at - line 7.
Use of uninitialized value $m1 in quoted execution (``, qx) at - line 8.
-Use of uninitialized value $g1 in concatenation (.) or string at - line 10.
Use of uninitialized value $m1 in concatenation (.) or string at - line 10.
+Use of uninitialized value $g1 in concatenation (.) or string at - line 10.
########
use warnings 'uninitialized';
my ($m1);
Use of uninitialized value $g1 in index at - line 15.
Use of uninitialized value $m1 in index at - line 15.
Use of uninitialized value $m2 in index at - line 15.
-Use of uninitialized value $m2 in rindex at - line 16.
Use of uninitialized value $m1 in rindex at - line 16.
+Use of uninitialized value $m2 in rindex at - line 16.
Use of uninitialized value $g1 in rindex at - line 17.
-Use of uninitialized value $m2 in rindex at - line 17.
Use of uninitialized value $m1 in rindex at - line 17.
+Use of uninitialized value $m2 in rindex at - line 17.
########
use warnings 'uninitialized';
my ($m1, $v);
$v = sprintf $m1;
$v = sprintf '%d%d%d%d', $m1, $m2, $g1, $g2;
-eval {formline $m1 }; undef $m1;
+my $m3; eval {formline $m3 };
formline '@<<@<<@<<@<<', $m1, $m2, $g1, $g2;
EXPECT
Use of uninitialized value $m1 in sprintf at - line 5.
Use of uninitialized value $m2 in sprintf at - line 6.
Use of uninitialized value $g1 in sprintf at - line 6.
Use of uninitialized value $g2 in sprintf at - line 6.
-Use of uninitialized value $m1 in formline at - line 7.
+Use of uninitialized value $m3 in formline at - line 7.
Use of uninitialized value $m1 in formline at - line 8.
Use of uninitialized value $m2 in formline at - line 8.
Use of uninitialized value $g1 in formline at - line 8.
my %h = ("\0011\002\r\n\t\f\"\\abcdefghijklmnopqrstuvwxyz", undef);
$v = join '', %h;
EXPECT
-Use of uninitialized value $h{"\0011\2\r\n\t\f\"\\abcdefghijkl"...} in join or string at - line 6.
+Use of uninitialized value $h{"\0011\2\r\n\t\f\"\\abcdefghijklm"...} in join or string at - line 6.
########
use warnings 'uninitialized';
my ($m1, $v);
eval { my $x; seek $x,$m1, $g1 };
eval { my $x; sysseek $x,$m1, $g1 };
-eval { syswrite $m1, $g1 };
-eval { syswrite STDERR, $m1 };
-eval { syswrite STDERR, $m1, $g1 };
-eval { syswrite STDERR, $m1, $g1, $m2 };
-eval { my $x; flock $x, $g1 };
+eval { syswrite $m1, $g1 }; # logic changed - now won't try $g1 if $m1 is bad
+# eval { syswrite STDERR, $m1 }; # XXX under utf8, can give
+# eval { syswrite STDERR, $m1, $g1 }; # XXX different warnings
+# eval { syswrite STDERR, $m1, $g1, $m2 };
eval { my $x; socket $x, $m1, $g1, $m2 };
eval { my ($x,$y); socketpair $x, $y, $m1, $g1, $m2 };
EXPECT
Use of uninitialized value $g1 in sysseek at - line 6.
Use of uninitialized value $m1 in sysseek at - line 6.
Use of uninitialized value $m1 in ref-to-glob cast at - line 7.
-Use of uninitialized value $g1 in syswrite at - line 7.
-Use of uninitialized value $m1 in syswrite at - line 8.
-Use of uninitialized value $m1 in syswrite at - line 8.
-Use of uninitialized value $g1 in syswrite at - line 9.
-Use of uninitialized value $m1 in syswrite at - line 9.
-Use of uninitialized value $g1 in syswrite at - line 10.
-Use of uninitialized value $m1 in syswrite at - line 10.
-Use of uninitialized value $m2 in syswrite at - line 10.
-Use of uninitialized value $x in ref-to-glob cast at - line 11.
-Use of uninitialized value $g1 in flock at - line 11.
-Use of uninitialized value $m2 in socket at - line 12.
-Use of uninitialized value $g1 in socket at - line 12.
-Use of uninitialized value $m1 in socket at - line 12.
-Use of uninitialized value $m2 in socketpair at - line 13.
-Use of uninitialized value $g1 in socketpair at - line 13.
-Use of uninitialized value $m1 in socketpair at - line 13.
+Use of uninitialized value $m2 in socket at - line 11.
+Use of uninitialized value $g1 in socket at - line 11.
+Use of uninitialized value $m1 in socket at - line 11.
+Use of uninitialized value $m2 in socketpair at - line 12.
+Use of uninitialized value $g1 in socketpair at - line 12.
+Use of uninitialized value $m1 in socketpair at - line 12.
+########
+use Config;
+BEGIN {
+ if ( !$Config{d_flock} &&
+ !$Config{d_fcntl_can_lock} &&
+ !$Config{d_lockf} ) {
+ print <<EOM ;
+SKIPPED
+# flock not present
+EOM
+ exit ;
+ }
+}
+use warnings 'uninitialized';
+our ($g1);
+
+eval { my $x; flock $x, $g1 };
+EXPECT
+Use of uninitialized value $x in ref-to-glob cast at - line 16.
+Use of uninitialized value $g1 in flock at - line 16.
########
use warnings 'uninitialized';
my ($m1, $v);
$v = -w $m1;
$v = -x $m1;
$v = -e $m1;
-$v = -O $m1;
$v = -o $m1;
+$v = -O $m1;
$v = -z $m1;
$v = -s $m1;
$v = -M $m1;
$v = -l $m1;
$v = -u $m1;
$v = -g $m1;
-$v = -k $m1;
+# $v = -k $m1; # XXX this is a no-op under win32
$v = -t $m1;
$v = -T $m1;
$v = -B $m1;
Use of uninitialized value $m1 in -l at - line 30.
Use of uninitialized value $m1 in -u at - line 31.
Use of uninitialized value $m1 in -g at - line 32.
-Use of uninitialized value $m1 in -k at - line 33.
Use of uninitialized value $m1 in -t at - line 34.
Use of uninitialized value $m1 in -T at - line 35.
Use of uninitialized value $m1 in -B at - line 36.
$v = eval $m1;
EXPECT
Use of uninitialized value $_ in eval "string" at - line 4.
-Use of uninitialized value $_ in eval "string" at - line 4.
-Use of uninitialized value $_ in eval "string" at - line 4.
-Use of uninitialized value $m1 in eval "string" at - line 5.
-Use of uninitialized value $m1 in eval "string" at - line 5.
Use of uninitialized value $m1 in eval "string" at - line 5.
########
use warnings 'uninitialized';