sub add_line { my ($tree,@line) = @_; my $first_element = shift @line; if (is_a_folder_title($first_element)) { # TODO: implement is_a_folder_title() $tree->{$first_element} ||= {}; # create empty hashref if none exists, yet add_line($tree->{$first_element},@line); } else { $tree = [ $first_element, @line ]; } }