Symbolic References

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.