Kto woła?
Wbudowana funkcja caller
zwraca stos wywołań, dzięki czemu mogę sprawdzić, jak głęboko znajduje się Perl w moim programie. Programy i moduły również mogą używać funkcji caller
; nie trzeba stosować jej w procedurze. Kiedy wywołam funkcję caller
z najwyższego poziomu pliku uruchomionego jako program, nie zwróci ona niczego, ponieważ znajduję się w głównej części programu. Ponieważ wiem, że w pliku używanym jako moduł funkcja caller
coś zwraca, a w tym samym pliku uruchomionym jako program nie zwraca niczego, otrzymuję dokładnie to, czego mi potrzeba, żeby uzależnić działanie kodu od sposobu jego wywołania:
#!/usr/bin/perl package main; run() unless caller(); sub run { print "Po prostu kolejny haker Perla, \n"; }
Zapiszę ten program w ...
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.