in reply to override prototype

The prototype ($@) is very mis-leading. It means one parameter in scalar context followed by a list which could be empy. It does not mean a scalar followed by an array
my @fred = qw (The quick brown fox); sub mysub ($@) { print "@_\n"; } mysub(@fred)
prints:4 but then I guess you knew that because otherwise you would not be using prototypes ;-)