in reply to Perl/Tk window->protocol question

Perhaps the problem is that no parameters are allowed.

You've hit the nail on the head. \& takes a reference to the subroutine's implementation, whereas parameters are data that are passed at runtime. Probably the easiest way to achieve what you want here is to wrap your function call in another sub which doesn't require any arguments. This, in turn, can simply call your function, with arguments. Like so:

$top->protocol( 'WM_DELETE_WINDOW', sub { my_clean_up_routine( $top, $another_parameter ); } );

(Pay close attention to the braces and parens in that example.)

We're building the house of the future together.