$dir= $ENV{TMPDIR} || "/tmp"; $file ||= "default"; #### $size= defined $ENV{MAXSIZE} ? $ENV{MAXSIZE} : -1; $size= -1 if ! defined $size; #### $size= def( $ENV{MAXSIZE}, -1 ); def( $size, -1 ); # void context causes $size to be modified if( 0 < def( $size= $ENV{MAXSIZE), -1, 1 ) ) # The third argument above forces $size to be modified # even though no void context used. An alternative is: if( 0 < ( $size= def $ENV{MAXSIZE), -1 ) ) #### sub def { my( $val, $alt, $force )= @_; $val= defined $alt ? $alt : "" if ! defined $val; $_[0]= $val if ! defined wantarray || $force; return $val; }