no strict 'refs';
#
# symbolic references work for global variables only
#
use vars qw($bam @bam);
$name = "bam";
$db_h{name} = "bam";
$$name = 1; # sets $bam
${$name x 2} = 3; # sets $bambam
$name->[0] = 4; # sets $bam[0]
$$name[0] = 4; # also sets $bam[0]
${$name}[0] = 4; # also sets $bam[0]
${sub {return \"bam";}}[0] = 4;
# also sets $bam[0]
@$name = (); # clears @bam
&$name(); # calls &bam()
&{$db_h{name}}(); # calls &bam()
$pck = "THAT";
${"${pck}::$name"} = 5; # sets $THAT::bam without eval
${ $pck . "::h"}{i}; # sets $THAT::h{i}
#
# calling Spectra::get_motor_unit_backlash( "mot1")
#
no strict 'refs';
foreach my $func qw( motor_unit_backlash)
{
$m1 = &{"Spectra::" . "get_" . $func}( "mot1");
}
For an example of passing an anonymous subroutine reference as a parameter see section 9.1.