The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

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.