december has asked for the wisdom of the Perl Monks concerning the following question:
Hello fellow monks,
I have a quick question concerning the aliasing of functions. Consider the following example:
#!/usr/bin/perl -w use strict; local *basename = \&pathname; print basename('/usr/local/bin/ssh'), "\n"; sub pathname { my ($dir) = shift; my ($path, $name) = ($dir =~ /(.*)\/([^\/]*)$/); # if called as basename, return filename, otherwise return pathname +(how?) return $path; }
How can I get the name of the called function, so I can vary the output based on which function was called? I want the function to return the pathname if called with 'pathname', and the filename if called with 'basename'.
I have been reading about function templates and closures, which seems handy in case one has many aliases; but I wonder if there is a more easy way to just get the called function name, considering I only have one alias.
Thanks!
Back to
Seekers of Perl Wisdom