sub hoge {
my %args;
$args{'ID'} = shift;
@{$args{'steps'}} = @_;
$args{'destroyFunction'} = sub {
my %seq_args = %{shift};
if (%talk) {
sendTalkCancel(\$remote_socket,$seq_args{'ID'}) if (binFind(\@guestID,$seq_args{'ID'}) ne '');
undef %talk;
}
}
### code b###
if ($args{'ID'} && @{$args{'steps'}} && binFind(\@guestID,$args{'ID'} ne '')){
changeDirection(getDirection(\%{$myself{'pos_to'}},\%{$guest_lut{$args{'ID'}}{'pos'}}));
sendTalk(\$remote_socket,$args{'ID'});
$timeout{'hoge'}{'time'} = time;
unshift @ai_seq, 'check';
unshift @ai_seq_args, \%args;
}
### code b end ###
}
※Active Perl v5.8.2 buld808を使用。OS WIN2K SP

このサブルーチンを組み込むとsyntax errorとなるのですが、入れ子とか問題なさそうなのでよくわからず。
問題があると思われる部分を抜き出し、 Perl -c にてチェックをすると、
Syntax error at ****** line 13,near "){" 、Syntax erroe at ****** line 14,near "}}"と表示されます。
サブルーチンを組み込んだプログラム全体でチェックした場合も同様なSyntax errorとなっております。
そこで、"code b"の部分だけ及び、"code b"の部分をコメントアウトした状態でそれぞれでチェックするとSyntax OKと表示されます。
どこを直したらいいのかわからない状態です。どうかアドバイスをお願いします。