�znur Tastan wrote:
> > > &print_rusage($t);
> >
> > Don't do this. The & operator is needed only in special cicumstances
>
> I was wondering when to use this &?
Not very often, really. I used it recently, and I think that was the first time
in many thousands of function calls. On place it is necessary is when
dereferencing a function ref [or it could be that I just haven't found a way to
accomplish that task without it.] It was in code I posted a few days ago--let
me see if I can find it...Okay, the sitch here was that I was building a hash of
function references, as sample of how a swittchboard function could be set up.
sub get_crisis {
my $crisis_tag = shift;
my $crises = {
'airlock open' => \&raise_airlock_open_emergency,
'antimatter volley' => \&raise_positron_emergency
};
return $crises->{$crisis_tag};
}
sub raise_airlock_open_emergency {
my $name = shift;
print "Airlock is open, $name\n";
}
sub raise_positron_emergency {
my $name = shift;
print "They're bombarding us with positrons, $name\n";
}
my $crisis = get_crisis ('airlock open');
&$crisis('Captain');
^Z
Airlock is open, Captain
In this callback context, the & was necessary in order to tell the compiler to
dereference the reference scalar $crisis as a function. When a function name is
declared in or impoted to the local namespace, there is no such need to specify
that the name is a reference to a subroutine. Used in that context, it also
does other tweaky things with the argument list.
Joseph
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>