7 require Config; import Config;
8 keys %Config; # Silence warning
9 if ($Config{extensions} !~ /\bList\/Util\b/) {
10 print "1..0 # Skip: List::Util was not built\n";
16 use Test::More tests => 8;
17 use List::Util qw(first);
20 ok(defined &first, 'defined');
22 $v = first { 8 == ($_ - 1) } 9,4,5,6;
23 is($v, 9, 'one more than 8');
25 $v = first { 0 } 1,2,3,4;
26 is($v, undef, 'none match');
29 is($v, undef, 'no args');
31 $v = first { $_->[1] le "e" and "e" le $_->[2] }
32 [qw(a b c)], [qw(d e f)], [qw(g h i)];
33 is_deeply($v, [qw(d e f)], 'reference args');
35 # Check that eval{} inside the block works correctly
37 $v = first { eval { die }; ($i == 5, $i = $_)[0] } 0,1,2,3,4,5,5;
38 is($v, 5, 'use of eval');
40 $v = eval { first { die if $_ } 0,0,1 };
41 is($v, undef, 'use of die');
43 sub foobar { first { !defined(wantarray) || wantarray } "not ","not ","not " }
46 is($v, undef, 'wantarray');