($dispatch_table->{$perl_function}->(\@ARGV) || sub {})->();
is same thing as
my $x = $dispatch_table->{$perl_function}->(\@ARGV);
($x || sub {})->(); # $x is probably not code ref
Try,
($dispatch_table->{$perl_function} || sub {})->(\@ARGV);
or perhaps
$_ and $_->(\@ARGV) for $dispatch_table->{$perl_function};