if you're declaring 1 variable, its convoluted and a mess to do
in reply to my $x or my ($x)
but if you're instantiating a bunch of items before an eval block / loop:
both look cleaner to read and have a slighty faster perfomance (though its really insignficant). you can bench to see.
my ( $x , $y , $z );
if you're doing oop perl:
is bad form - what if an argument is missing/extra?
my $self = @_;
is better. because you might want
my ($self) = @_;
my ($self , $arg1 , $arg2 ) = @_;