| [ Team LiB ] |
|
Recipe 4.17 Implementing a Circular List4.17.1 ProblemYou want to create and manipulate a circular list. 4.17.2 SolutionUse unshift and pop (or push and shift) on a normal array. 4.17.3 Procedureunshift(@circular, pop(@circular)); # the last shall be first push(@circular, shift(@circular)); # and vice versa 4.17.4 DiscussionCircular lists are commonly used to repeatedly process things in order; for example, connections to a server. The code shown previously isn't a true computer science circular list, with pointers and true circularity. Instead, the operations provide for moving the last element to the first position, and vice versa. sub grab_and_rotate ( \@ ) {
my $listref = shift;
my $element = $listref->[0];
push(@$listref, shift @$listref);
return $element;
}
@processes = ( 1, 2, 3, 4, 5 );
while (1) {
$process = grab_and_rotate(@processes);
print "Handling process $process\n";
sleep 1;
}
4.17.5 See AlsoThe unshift and push functions in perlfunc(1) and Chapter 29 of Programming Perl; Recipe 13.13 |
| [ Team LiB ] |
|