in reply to Variable becomes undef on my web host but not locally.

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.
Simply do:

... html(\%hash_to_pass,$root_user,$root_path); ... sub html{ my($hash, $user, $path) = @_; .... }

Replies are listed 'Best First'.
Re^2: Variable becomes undef on my web host but not locally.
by Lady_Aleena (Priest) on Apr 22, 2013 at 21:56 UTC

    Sorry, I should have thought of adding sample usages.

    Printing a story from __DATA__ (the most used, 124 pages):

    html( code => sub { story(*DATA) });

    Printing a list:

    html( code => sub { list(3,'u',\@items, { class => 'two' }) });

    Printing a definition list:

    html( code => sub { definition_list(3, { headings => ['term','definiti +on'] }) });

    Printing a story from __DATA__ with a link_list:

    html( code => sub { story(*DATA); link_list(3,'HTML Links',%HTML_links); });

    Printing a mixed bag:

    html( code => sub { story(*DATA); heading(3,2,'Royal chess pieces'); definition_list(3, { headings => [qw(piece move)] }); table(3, { class => 'royal_chess', caption => 'Royal chess board', r +ows => [['data',\@rows]] }); });

    I was hoping there was a solution which did not require me to rewrite 169 files, however if one does not exist, I will.

    Have a cookie and a very nice day!
    Lady Aleena