Revision history for Sub-Prototype-Util
+0.03 2008-04-06 22:20 UTC
+ + Fix : our doesn't exist in 5.005 (sigh).
+ + Fix : '_' prototype should use the current argument when it's
+ available and only resort to $_ when it's not.
+
0.02 2008-04-06 16:40 UTC
+ Fix : Missing LICENSE in Makefile.PL.
+ Fix : Typos in POD.
--- #YAML:1.0
name: Sub-Prototype-Util
-version: 0.02
+version: 0.03
abstract: Prototype-related utility routines.
license: perl
author:
Sub::Prototype::Util - Prototype-related utility routines.
VERSION
- Version 0.02
+ Version 0.03
SYNOPSIS
use Sub::Prototype::Util qw/flatten recall/;
=head1 VERSION
-Version 0.02
+Version 0.03
=cut
-our $VERSION = '0.02';
+use vars qw/$VERSION/;
+
+$VERSION = '0.03';
=head1 SYNOPSIS
} elsif ($p =~ /[\@\%]/) {
push @args, @_;
last;
- } elsif ($p eq '_') {
+ } elsif ($p eq '_' && @_ == 0) {
push @args, $_;
} else {
push @args, shift;
last;
} elsif ($p =~ /\&/) {
push @args, 'sub{&{$a[' . $i . ']}}';
- } elsif ($p eq '_') {
+ } elsif ($p eq '_' && $i >= @a) {
push @args, '$_';
} else {
push @args, '$a[' . $i . ']';
use strict;
use warnings;
-use Test::More tests => 26;
+use Test::More tests => 27;
use Sub::Prototype::Util qw/flatten/;
[ '\&$', 'coderef', [ \&main::hlagh, 1 ], [ 'HLAGH', 1 ] ],
[ '\[$@%]', 'class got scalarref', [ \1 ], [ 1 ] ],
[ '\[$@%]', 'class got arrayref', [ [ 1 ] ], [ 1 ] ],
- [ '\[$@%]', 'class got hashref', [ { 1,2 } ], [ 1, 2 ] ]
+ [ '\[$@%]', 'class got hashref', [ { 1,2 } ], [ 1, 2 ] ],
+ [ '_', '_ with argument', [ 1, 2 ], [ 1 ] ]
);
-my $l = [ '_', '$_', [ ] ];
+my $l = [ '_', '_ with no argument', [ ] ];
$l->[3] = [ $l ];
push @tests, $l;
use strict;
use warnings;
-use Test::More tests => 3 + 12 + (($^V ge v5.10.0) ? 2 : 0);
+use Test::More tests => 3 + 12 + (($^V ge v5.10.0) ? 4 : 0);
use Scalar::Util qw/set_prototype/;
use Sub::Prototype::Util qw/recall/;
[ 'main::mygrep1', 'grep1', $g, $g, [ 3 .. 5 ] ],
[ 'main::mygrep2', 'grep2', $g, $g, [ 3 .. 5 ] ],
);
-sub myit { push @{$_->[2]}, 1; return 2 };
+sub myit { push @{$_[0]->[2]}, 3; return 4 };
if ($^V ge v5.10.0) {
set_prototype \&myit, '_';
- push @tests, [ 'main::myit', '_ prototype', [ ], [ 1 ], [ 2 ] ];
+ push @tests, [ 'main::myit', '_ with argument',
+ [ [ 1, 2, [ ] ], 5 ],
+ [ [ 1, 2, [ 3 ] ], 5 ],
+ [ 4 ]
+ ];
+ push @tests, [ 'main::myit', '_ with no argument', [ ], [ 3 ], [ 4 ] ];
}
for (@tests) {