Tworzenie i zastępowanie nazwanych procedur

W poprzednim podrozdziale zapisałem procedurę anonimową w zmiennej, ale procedura to w istocie jeden ze slotów typegloba (Rozdział 8.). Tam również mogę zapisywać procedury. Kiedy przypisuję procedurę anonimową do typegloba, Perl umieszcza ją w slocie CODE. Następnie mogę używać procedury tak, jakbym zdefiniował ją przy użyciu nazwy:

print "Procedura foo jest zdefiniowana - na początku\n" if defined( &foo );

*foo = sub { print "Jestem tutaj!\n" };
foo();

print "Procedura foo jest zdefiniowana - na końcu\n" if defined( &foo );

Bywa to przydatne, kiedy muszę zastąpić fragment kodu w innym module, co pokażę w Rozdział 10. Nie chcę edytować innego modułu; zastępuję tylko pojedynczą definicję, która wymaga ...

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

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.