In this case the performance gained from using the goto instead of a more conventional subroutine call is probably outweighed by the maintenance risk. Somebody is liable to pick this up and not understand it, and then either undo the trick or add a layer of bandaids on top of it. I'd go with
return edit_office_product(@_)
if $query->param('officeID');
Actually, my concern was having the call stack accurately reflect what I wanted (and having a function do what I truly want it to do) versus having a bit of code that some might not understand. As a standing rule, I never optimize for performance. I optimize for correctness and clarity. Performance is rarely an issue for an unfinished product as it can't truly be predicted :)