in reply to Passing arguments to a function reference

What are you expecting the value of $error to be when the signal arrives?

Plus, why not simply capture the variable as a closure:

my $error; sub timeout { ... if( $error ) ... ... } ... $SIG{ALRM} = \&timeout;

With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
/div