#!/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; }