#!/usr/bin/perl use strict; use warnings; use User; my $test = User->new(name => "user1", team=> "teamalpha"); my $test2 = User->new(name => "user2", team=> "teambeta"); $test->test(); $test2->test(); package User; use strict; use warnings; my $references; sub new { my ($class, %arg) = @_; my $objref = { _name => $arg{name} || "unknown" _team => $arg{team} || "unknown" }; bless $objref, $class; $references->{$objref} = "value"; return $objref; } sub test { my $self = shift @_; foreach my $object (keys %$ds) { if($self->{_team} ne $object->{_team}) { #find opposing team #do something to $object } } }