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.