my @part = ( 'http://example.net/app' ); push @part, 'admin' if $is_admin_link; push @part, $subsite if defined $subsite; push @part, $mode; push @part, $id if defined $id; push @part, $submode if defined $submode; my $uri = join '/', @parts; #### # [updated: originally had `'admin' ? $is_admin_link : ()`] my @part = ( 'http://example.net/app', ( $is_admin_link ? 'admin' : () ), ( defined $subsite ? $subsite : () ), $mode, ( defined $id ? $id : () ), ( defined $submode ? $submode : () ), ); my $uri = join '/', @part; #### $a = undef; print $a ? 'true' : 'false'; # prints 'false' print $a; # prints '' and warns $a = 0; print $a ? 'true' : 'false'; # prints 'false' print $a; # prints '0' $a = 'abc'; print $a ? 'true' : 'false'; # prints 'true' print $a; # prints 'abc' # whereas $a = undef; print !!$a ? 'true' : 'false'; # prints 'false' print !!$a; # prints '' without warning $a = 0; print !!$a ? 'true' : 'false'; # prints 'false' print !!$a; # prints '' $a = 'abc'; print !!$a ? 'true' : 'false'; # prints 'true' print !!$a; # prints 1 #### @_ = ( 'a' ) x 4; print join ':', @_; # prints 'a:a:a:a' print scalar @_; # prints '4' #### @_ = ( 'a' ) x 1; print join ':', @_; # prints 'a' print scalar @_; # prints '1' @_ = ( 'a' ) x 0; print join ':', @_; # prints '' print scalar @_; # prints '0' #### my @part = ( 'http://example.net/app', ( 'admin' ) x!! $is_admin_link, ( $subsite ) x!! defined $subsite, $mode, ( $id ) x!! defined $id, ( $submode ) x!! defined $submode, ); my $uri = join '/', @parts;