# If the constant string "admin" changes, you can change it # in just one place... sub admin_link { my ($flag) = @_; if ($flag ) { return('admin'); } return(""); } # this can obviously be optimized as necessary... sub join_if_defined { my ( $join_string,@list) = @_; my @defined_elements; @defined_elements = grep( defined($_),@list); return join($join_string, @defined_elements ); } @sections = ( 'http://example.net/app', admin_link($is_admin), $subsite, $node, $id, $subnode ); $uri = join_if_defined("/", @sections);