From: daniel@biz.bitpusher.com Date: Wed, 11 Jul 2001 23:25:47 +0000 (-0700) Subject: [ID 20010711.005] in Tie::Array, SPLICE ignores context, breaking SHIFT X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=aae9faaef48c83ef5b906434cb0a359c3263c598;p=p5sagit%2Fp5-mst-13.2.git [ID 20010711.005] in Tie::Array, SPLICE ignores context, breaking SHIFT Message-Id: <200107120625.f6C6PkJ13065@biz.bitpusher.com> p4raw-id: //depot/perl@11306 --- diff --git a/lib/Tie/Array.pm b/lib/Tie/Array.pm index 8821783..7703c13 100644 --- a/lib/Tie/Array.pm +++ b/lib/Tie/Array.pm @@ -11,7 +11,6 @@ sub DESTROY { } sub EXTEND { } sub UNSHIFT { scalar shift->SPLICE(0,0,@_) } sub SHIFT { shift->SPLICE(0,1) } -#sub SHIFT { (shift->SPLICE(0,1))[0] } sub CLEAR { shift->STORESIZE(0) } sub PUSH @@ -70,7 +69,7 @@ sub SPLICE { for (my $i=0; $i < @_; $i++) { $obj->STORE($off+$i,$_[$i]); } - return @result; + return wantarray ? @result : pop @result; } sub EXISTS { diff --git a/t/op/splice.t b/t/op/splice.t index 3b4229a..d1bfe99 100755 --- a/t/op/splice.t +++ b/t/op/splice.t @@ -1,6 +1,6 @@ #!./perl -print "1..10\n"; +print "1..12\n"; @a = (1..10); @@ -37,4 +37,18 @@ print "ok 9\n"; print "not " unless j(splice(@a)) eq j(1,2,7,3) && j(@a) eq ''; print "ok 10\n"; +# Tests 11 and 12: +# [ID 20010711.005] in Tie::Array, SPLICE ignores context, breaking SHIFT + +my $foo; + +@a = ('red', 'green', 'blue'); +$foo = splice @a, 1, 2; +print "not " unless $foo eq 'blue'; +print "ok 11\n"; + +@a = ('red', 'green', 'blue'); +$foo = shift @a; +print "not " unless $foo eq 'red'; +print "ok 12\n";