Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在perl中,使用必需的命令将参数传递给脚本_Perl - Fatal编程技术网

在perl中,使用必需的命令将参数传递给脚本

在perl中,使用必需的命令将参数传递给脚本,perl,Perl,我有两个文件tmp.pl和tmp2.pl。我想用require命令调用tmp2.pl,但也要发送一个参数。有更好的方法吗 tmp.pl require "tmp2.pl" "passed parameter"; tmp2.pl print @_; 据我所知,require不能用于发送参数。但我认为这是件好事,因为我想不出你为什么要这么做。在我看来,你的设计是错误的 tmp2.pl应为: 一个独立的perl程序,您应该使用system或qx() 模块,带有可选的导出标签等 定义类的包 但这

我有两个文件tmp.pl和tmp2.pl。我想用require命令调用tmp2.pl,但也要发送一个参数。有更好的方法吗

tmp.pl

require "tmp2.pl" "passed parameter";
tmp2.pl

print @_;

据我所知,
require
不能用于发送参数。但我认为这是件好事,因为我想不出你为什么要这么做。在我看来,你的设计是错误的

tmp2.pl
应为:

  • 一个独立的perl程序,您应该使用
    system
    qx()
  • 模块,带有可选的导出标签等
  • 定义类的包

但这只是我的想法….

据我所知,
require
不能用于发送参数。但我认为这是件好事,因为我想不出你为什么要这么做。在我看来,你的设计是错误的

tmp2.pl
应为:

  • 一个独立的perl程序,您应该使用
    system
    qx()
  • 模块,带有可选的导出标签等
  • 定义类的包

但这只是我的想法….

也许有更好的方法来完成你想做的事情,但你可以通过以下方式实现你当前的子目标

{
    local @_ = ("passed parameter");
    require "tmp2.pl";
}
我可能会在一个Perl脚本中运行Perl脚本的地方考虑这个习语。也就是说,我可以说

{
    local @ARGV = ("foo","bar");
    require "my_script.pl";
}
而不是

system("perl","my_script.pl","foo","bar");

(这两个调用之间有很多细微的差别,所以很大程度上取决于您需要这些调用的“功能”)

可能有更好的方法来完成您试图完成的任务,但您可以通过以下方式实现当前的子目标

{
    local @_ = ("passed parameter");
    require "tmp2.pl";
}
我可能会在一个Perl脚本中运行Perl脚本的地方考虑这个习语。也就是说,我可以说

{
    local @ARGV = ("foo","bar");
    require "my_script.pl";
}
而不是

system("perl","my_script.pl","foo","bar");

(这两个电话之间有很多细微的差别,所以很大程度上取决于您需要这些电话的“功能”)

是的,我认为这应该是可行的。使用“require”包含脚本。之后,您可以通过调用子函数来传递参数。修改后的脚本可以是

需要“tmp2.pl”
子函数(参数)
print@


是的,我想这应该行得通。使用“require”包含脚本。之后,您可以通过调用子函数来传递参数。修改后的脚本可以是

需要“tmp2.pl”
子函数(参数)
print@


假设您想要执行其他程序并捕获其输出,我倾向于使用IPC::Run模块

#/usr/bin/perl
严格使用;
使用警告;
使用IPC::运行qw(运行);
运行(['./tmp2.pl',@ARGV],\''.\my$out,\my$err);
打印“输出:$out\n”;
打印“错误:$err\n”;

假设您想要执行其他程序并捕获其输出,我倾向于使用IPC::Run模块

#/usr/bin/perl
严格使用;
使用警告;
使用IPC::运行qw(运行);
运行(['./tmp2.pl',@ARGV],\''.\my$out,\my$err);
打印“输出:$out\n”;
打印“错误:$err\n”;