use warnings; use strict; package Blah; { sub new { my ($class, $params) = @_; my $self = bless $params, $class; return $self; } sub display { my ($self) = @_; # should be using getters, but I digress for (keys %{ $self->{params} }){ print "$_: $self->{params}{$_}\n"; } } } package main; { my $hashref = { num1 => 1, num2 => 2 }; my $obj = Blah->new({params => $hashref}); $obj->display; }