在perl中,使用必需的命令将参数传递给脚本
我有两个文件tmp.pl和tmp2.pl。我想用require命令调用tmp2.pl,但也要发送一个参数。有更好的方法吗 tmp.pl在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() 模块,带有可选的导出标签等 定义类的包 但这
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”;