#!/usr/bin/perl use strict; use warnings; use feature 'say'; sub a { local *_b = sub { say @_; return 'sub b'; }; return _b('sub a'); } say a(); __END__ $ perl test.pl sub a sub b