diff -ur Template-Toolkit-2.14a/lib/Template/Stash.pm Template-Toolkit-2.14-sm/lib/Template/Stash.pm
--- Template-Toolkit-2.14a/lib/Template/Stash.pm	Thu Feb  2 19:29:07 2006
+++ Template-Toolkit-2.14-sm/lib/Template/Stash.pm	Sun Feb 12 03:46:50 2006
@@ -332,6 +332,16 @@
             return [ splice(@$list) ];
         }
     },
+    'shuffle'   => sub {
+        my ($list, $limit) = @_;
+        my @r = \( @$list ); # a list of refs to @$list items
+        my $i = @$list;
+        $limit = $i if $limit < 1 || $limit > $i;
+        return [ map {
+            my $n = int rand $i--;
+            ( ${$r[$n]}, $r[$n] = $r[$i] )[0];
+        } (1 .. $limit) ];
+    },
 
     defined $LIST_OPS ? %$LIST_OPS : (),
 };
