要求是从命令行参数传递模块名称和函数名称.我需要在程序中获取命令行参数,我需要从该模块调用该函数
例如,使用2个参数调用try.pl程序:MODULE1(模块名称)显示(函数名称)
perl try.pl MODULE1 Display
我想要这样的东西,但它不起作用,请指导我:
use $ARGV[0]; & $ARGV[0]::$ARGV[1]();
cjm.. 9
假设该函数不是类方法,请尝试以下方法:
#!/usr/bin/perl use strict; use warnings; my ( $package, $function ) = @ARGV; eval "use $package (); ${package}::$function()"; die $@ if $@;
请记住,这种技术对代码注入是开放的.(参数可以很容易地包含任何Perl代码而不是模块名称.)
假设该函数不是类方法,请尝试以下方法:
#!/usr/bin/perl use strict; use warnings; my ( $package, $function ) = @ARGV; eval "use $package (); ${package}::$function()"; die $@ if $@;
请记住,这种技术对代码注入是开放的.(参数可以很容易地包含任何Perl代码而不是模块名称.)
有很多方法可以做到这一点.其中之一是:
#!/usr/bin/perl use strict; use warnings; my ( $package, $function ) = @ARGV; eval "use $package; 1" or die $@; $package->$function();
注意函数的第一个参数是$ package.