Correct.
But for standards (and to make it a bit more readable), it might be better to write it like this, although it's also a matter of taste :)
sub new {
my $classname = shift;
my %arg= ( _server => undef,
_database => undef,
_hSession => undef,
_hDatabase} => undef,
@_,
);
my $self = {}; # note this corresponds whith $this in your code.
bless $self, $classname;
$self->{_server} = $arg{_server};
$self->{_database} = $arg{_database};
$self->{_hSession} = $arg{_hSession};
$self->{_hDatabase} = $arg{_hDatabase};
return $self;
}
"We all agree on the necessity of compromise. We just can't agree on when it's necessary to compromise." - Larry Wall.