NAME

TERN::it - Perl extension for easing nonautovivifying aggregate accesses

SYNOPSIS

use TERN::it;

it()
exists_it(\%$)
exists_itA(\@)
exists_itH(\%$)
defined_it(\$)

# instead of 
# print gen_printable $Data->{$state}->{$city}->{$lastname}->{$firstname}
#
exists_it %Data, $state and
exists_it %{it()}, $city and
exists_it %{it()}, $lastname and
exists_it %{it()}, $firstname and
print gen_printable it;

DESCRIPTION

  $TERN::it is a reserved variable that holds the object of the
  most recent C<exists> or <defined> operation.  The point of this
  is to allow descent into complex data structures without autovivifying
  the empty upper layers and also without repeating all the upper descent
  steps.  This is a small speed win.  This is how TERN will handle
  descent into compex, nested containers.
  
  C<it> this subroutine accesses the current value of it.
  
  C<exists_it> this subroutine takes two arguments, the first a hash
  and the second a key.  If we had prototype-based dispatch, there could
  be two versions be used with an array or a hash and Perl would figure out
  which to call but we don't.
  
  C<exists_itA> 
  	exists_itA @fish, 7	# the same as exists $fish[7] but sets C<it>
	
  C<exists_itH>
  	an alias to exists_it, for symmetry with exists_itA
  	
  C<defined_it>
	defined_it($something) 	# the same as defined(${$TERN::it = \$something})
  

EXPORT

it
exists_it
exists_itA
exists_itH
defined_it

AUTHOR

David Nicol, <lt>davidnico@cpan.org<gt>

SEE ALSO

TERN.