c:\@Work\Perl>perl -e "use warnings; use strict; ;; use Data::Dumper; ;; package Test; ;; sub new { my $self = bless {}, shift; my ($uid, $root, $app) = @_; ;; return $self->_init($uid, $root, $app); ;; } ;; sub _init { my $self = shift; my ($uid, $root, $app) = @_; ;; $self->{Root} = $root; $self->{UserDir} = $self->{Root} . qq{Usr/$uid/}; $self->{UserAppData} = $self->{UserDir} . $app, ;; return $self; } ;; package main; ;; my $test = Test->new('steve', '/home/', 'perl'); print Dumper $test; " $VAR1 = bless( { 'Root' => '/home/', 'UserDir' => '/home/Usr/steve/', 'UserAppData' => '/home/Usr/steve/perl' }, 'Test' );