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.