Asocjacje jako obiekty

Jedno z najciekawszych zastosowań procedury AUTOLOAD można znaleźć w module Hash::AsObject napisanym przez Paula Hoffmana. W swojej procedurze AUTOLOAD dokonuje on kilku magicznych sztuczek, aby można było uzyskać dostęp do wartości asocjacji za pomocą kluczy, jak zwykle się to robi, albo jak do obiektu z metodami o nazwach takich jak nazwy kluczy:

use Hash::AsObject;

my $hash = Hash::AsObject->new;

$hash->{foo} = 42;   # zwykły dostęp do asocjacji

print $hash->foo, "\n"; # dostęp jak do obiektu

$hash->bar( 137 ),      # ustawienie wartości

Moduł radzi sobie nawet z asocjacjami wielopoziomowymi:

$hash->{baz}{quux} = 149;

$hash->baz->quux;

Trik polega na tym, że $hash jest zwykłą referencją do asocjacji, która zostaje przekształcona ...

Get Perl. Mistrzostwo w programowaniu now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.