package F; my %D = ( foo => 1 ); sub new { my ($c,%p) = @_; my %s = ( %D, %p ); return bless \%s, $c; } sub f_1 { my $s = shift; ... } package main; my $f = new F; print $f->f_1('blah'); #### F -> Foo %D -> Default &new $c -> class %p -> parameter %s -> self &f_1 -> marble $s -> self main $f -> foo_obj #### j is a jack h is a host ac is an account t is a topology p is a port v is a vlan n is a netmask b is a building r is a room m is a MAC address