This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Add test for grep() and wantarray
authorHugo van der Sanden <hv@iii.co.uk>
Tue, 18 Feb 1997 11:05:59 +0000 (11:05 +0000)
committerChip Salzenberg <chip@atlantic.net>
Fri, 21 Feb 1997 16:41:00 +0000 (04:41 +1200)
Subject: Re: subscript when wantarray

In <199702172207.RAA20755@rio.atlantic.net>, Chip Salzenberg writes:
:First, here's a patch that makes the first case print "2"
[...]
:Second, the reason that it prints "2" instead of "3" is that
:C<(undef)[0]> evaluates to the empty list in an array context,
:but to C<undef> in a scalar context.  This is on purpose.
Yep, I expected that.

Patch worked fine here; below is an extra test using the same code as my
original example.

p5p-msgid: <199702181105.LAA17895@tyree.iii.co.uk>

t/op/misc.t

index 5e628ad..d7a62dc 100755 (executable)
@@ -259,6 +259,13 @@ print p::func()->groovy(), "\n"
 EXPECT
 really groovy
 ########
+@list = ([ 'one', 1 ], [ 'two', 2 ]);
+sub func { $num = shift; (grep $_->[1] == $num, @list)[0] }
+print scalar(map &func($_), 1 .. 3), " ",
+      scalar(map scalar &func($_), 1 .. 3), "\n";
+EXPECT
+2 3
+########
 ($k, $s)  = qw(x 0);
 @{$h{$k}} = qw(1 2 4);
 for (@{$h{$k}}) { $s += $_; delete $h{$k} if ($_ == 2) }