#! perl use strict; use warnings; sub name(*;**) { printf "First argument: %s\n" . "Second argument: %s\n" . "Third argument: %s\n\n", @_; } printf "\nname() has prototype (%s)\n\n", prototype('name'); my @array = ('foo', 'bar'); &name('1a', 'u', 'v'); name('1b', 'u', 'v'); &name('2a', ('x', 'y')); name('2b', ('x', 'y')); &name('3a', @array, 'extra_1'); name('3b', @array, 'extra_2'); my $fp = \&name; $fp->('3c', @array, 'extra_3');