0

これはCan't use string ("1") as a subroutine ref while "strict refs" in useの複製であることはわかって いますが、ディスパッチ テーブルの呼び出しに関する問題が何であるかわかりません。コードは実行されているようですが、ログに次のエラーが表示されます。Can't use string ("1") as a subroutine ref while "strict refs" in use at C:/filepath/file.pl line 15.

#! C:\strawberry\perl\bin\perl

use strict;
use warnings;
use Custom::MyModule;
use CGI ':standard'; 

my $dispatch_table = {
      getLRFiles => \&Custom::MyModule::getLRFiles,
      imageMod => \&Custom::MyModule::imageMod,
      # More functions
  };

my $perl_function = param("perl_function");
($dispatch_table->{$perl_function}->(\@ARGV) || sub {})->(); # Error occurs on this line

カスタムモジュールを使用しているという事実と関係があるかどうかはわかりません.Perlにあまり慣れていないので、おそらくばかげているでしょうが、助けていただければ幸いです!

4

1 に答える 1

5
($dispatch_table->{$perl_function}->(\@ARGV) || sub {})->();

と同じです

my $x = $dispatch_table->{$perl_function}->(\@ARGV);
($x || sub {})->(); # $x is probably not code ref

試す、

($dispatch_table->{$perl_function} || sub {})->(\@ARGV);

多分

$_ and $_->(\@ARGV) for $dispatch_table->{$perl_function};
于 2013-12-31T17:40:00.510 に答える