我有4个子rountines(sub room1 {do stuuf ...},sub room2 {do stuff ...},sub room3 {do other stuff ...})将在例程中执行不同的操作.
我想要做的是能够基于变量名称动态调用例程.
例如,
Run Code Online (Sandbox Code Playgroud)if ($currentRoom == 1) { &room1; } if ($currentRoom == 2) { &room2; } if ($currentRoom == 3) { &room3; }
我宁愿做的只是使用$ currentRoom作为&room之后的值调用正确的子例程.类似于&room {$ currentRoom};
可以这样做,如果是这样,我怎么能做到这一点.
Mil*_*ler 16
创建一个与房间号相关的哈希值到子例程引用:
my %room_actions = (
1 => \&room1,
2 => \&room2,
3 => \&room3,
);
if ($room_actions{$currentRoom}) {
$room_actions{$currentRoom}->();
} else {
die "room doesn't exist: $currentRoom";
}
Run Code Online (Sandbox Code Playgroud)