当前位置:  开发笔记 > 编程语言 > 正文

如何插入变量以从模块调用Perl函数?

如何解决《如何插入变量以从模块调用Perl函数?》经验,为你挑选了2个好方法。

要求是从命令行参数传递模块名称和函数名称.我需要在程序中获取命令行参数,我需要从该模块调用该函数

例如,使用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代码而不是模块名称.)



1> cjm..:

假设该函数不是类方法,请尝试以下方法:

#!/usr/bin/perl
use strict;
use warnings;

my ( $package, $function ) = @ARGV;

eval "use $package (); ${package}::$function()";
die $@ if $@;

请记住,这种技术对代码注入是开放的.(参数可以很容易地包含任何Perl代码而不是模块名称.)



2> 小智..:

有很多方法可以做到这一点.其中之一是:

#!/usr/bin/perl
use strict;
use warnings;

my ( $package, $function ) = @ARGV;

eval "use $package; 1" or die $@;

$package->$function();  

注意函数的第一个参数是$ package.

推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有