Hi Lady Aleena,
You have only shown us the module, but how is your subroutine html been called is also important.
Of course, from the face value both your variable $root_path and $root_user should not be undefined but who knows just "maybe", they have been changed.My Advise: Pass the variable to use within a subroutine as argument to the subroutine. In other words, as much as possible, don't use global variable that can be change by other part of your code in your subroutine.
my($hash, $user, $path) = @_;