http://www.perlmonks.org?node_id=255833

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!