add_to_queue(foo => \&foo, [ @fooargs ], $footime); add_to_queue(bar => \&bar, [ @barargs ], $bartime); dump_queue(); { my @queue; sub add_to_queue { my ($label, $code, $args, $time) = @_; push @queue, [ $label, $code, $args, $time ]; } sub dump_queue { for (@queue) { my ($label, $code, $args, $time) = @$_; print "Will execute $label with @$args at $time\n"; } } }