in reply to Passing references to subroutines with parameters

You can do this by changing your call slightly and creating an anonymous subroutine:
sub_to_receive('123', sub {sub_to_be_passed('xyz',@_)});
Effectively, you're creating a new (anonymous) subroutine that calls sub_to_be_passed with the first argument already filled in and the others coming from what is passed to the anonymous subroutine when it is called.