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