idle.pl

来自「Unix下的MUD客户端程序」· PL 代码 · 共 53 行

PL
53
字号
# Callout management@Callouts = ();@CalloutTimes = ();@NextCallout = ();sub idle {    my ($i);    for ($i = 0; $i <= $#Callouts; $i++) {        if ($NextCallout[$i] <= $now) {            $NextCallout[$i] = $now + $CalloutTimes[$i];            &{$Callouts[$i]};        }    }}sub callout_add ($$) {    my ($function, $time) = @_;    push @Callouts, $function;    push @CalloutTimes, $time;    push @NextCallout, $now + $time;}sub callout_once ($$) {    my ($function, $time, $sub) = @_;    $sub = sub { callout_remove($sub); &$function(); };    callout_add ($sub, $time);}sub callout_remove ($) {    my ($what, $x) = @_;    for ($x = 0; $x <= $#Callouts; $x++) {        # Is this the right way to compare references?        if ($Callouts[$x] eq $what) {            splice(@Callouts, $x, 1);            splice(@CalloutTimes, $x, 1);            splice(@NextCallout, $x, 1);            return;        }    }    print "callout_remove(): Removal of $what FAILED!\n";}sub cmd_show_callouts {    my ($i);    foreach $i (0 .. $#Callouts) {        printf "%-20s %6d %6d\n", $Callouts[$i], $CalloutTimes[$i], $NextCallout[$i];    }}1;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?