#!/usr/bin/perl use strict; use warnings; print "Calling: " . Calling::package_name() . "\n"; # Displays 'main' and needs to be 'Calling' print "Calling2: " . Calling2::package_name() . "\n"; # Displays 'main' and needs to be 'Calling2' package Test; sub package_name { return (caller)[0] } # What to replace caller with? package Calling; use base 'Test'; package Calling2; use base 'Test';