sub A { BARE_BLOCK: { if (0 == $_[0]) { return 1 + $_[1]; } @_=($_[0] - 1, $_[1] ? A($_[0], $_[1]-1) : 1); redo BARE_BLOCK; } }