I'd never seen the goto &LABEL format either, so this is quite interesting. This ability to do with functions what exec does with processes is certainly remarkable, but why it was called "goto" is not entirely clear. Some
people, myself included, loathe that particular four letter word.
in reply to Would you use 'goto' here?
Just for the sake of clarity, it is probably best to use the return method you suggest.
As a note, if you find this sort of thing cropping up in nine different places, maybe you should switch to an OO framework. Override the edit method for Product::Office which @ISA Product:
I've seen some very clever uses of goto in extremely optimized code, where backing out of a pile of loops is just too costly, but this is very rare. Besides, if you were concerned about ultimate performance, you wouldn't be using Perl anyway.
my $product = new Product;
$product->edit(); # Same as edit_product
my $office_product = new Product::Office;
$office_product->edit(); # Same as edit_product_office