sub some_sub { ... return 5; # not 'exit', as this terminates the script } $returned = &some_sub; # 5 eval "exit(&some_sub)"; # exits block with return value of 5 $returned = $? << 8; # 5