由于我的项目,我今天开始学习Perl脚本。
让我先定义你的项目,这样你就可以清楚地了解我想做的事情。
我正在为应用程序的测试运行编写脚本。当我的脚本将执行时,它将从用户获取3个参数,然后它将为应用程序提供* .ini文件。在获取该文件之后,此脚本将从另一个位置执行另一个perl脚本,而第二个perl脚本将为我提供两个文本文件(比如说)folder1。然后我的脚本将从同一个应用程序的不同位置调用另一个perl脚本,这个文件将是test.date1.txt和test.date11.txt,这个第三个perl脚本也会给我两个不同的文本文件(test.date2.txt和test.date22.txt)在不同的文件夹中。现在我想重命名第一和第二个文件夹中的文件第一次运行结果第二次运行结果resoectively我想比较有什么区别。
直到现在我已经分配了我的输入参数,如果用户没有给出参数,那么向用户展示了什么错误,我也读过有关在线教程的比较,并做了一些像这样的比较代码: / p>
use Text::Diff;
my $diffs = diff 'test.date1.csv' => 'test.date2.csv';
print $diffs;
我被困在如何获取我的* .ini文件,然后运行我的其他perl脚本? 谁能帮我这个。这对我来说是一个很大的帮助。
注意:我今天开始编写脚本,很抱歉,如果我在定义项目时犯了一个愚蠢的错误
答案 0 :(得分:3)
你的意思是bash shell内置命令
source
执行在当前shell
中作为参数传递的文件的内容。 filename [arguments] source filename [arguments]
重新加载当前正在运行的bash的bash设置
source ~/.bashrc
或
. ~/.bashrc
which source
man bash
从当前shell中的filename读取并执行命令 环境并返回执行的最后一个命令的退出状态 从文件名。如果filename不包含斜杠,则文件名为 PATH用于查找包含文件名的目录。文件 在PATH中搜索不需要是可执行的。当bash不在posix中时 模式,如果在PATH中找不到文件,则搜索当前目录。 如果关闭shopt builtin命令的sourcepath选项, 未搜索PATH。如果提供了任何参数,它们就会变成 执行文件名时的位置参数。否则 位置参数不变。返回状态是状态 脚本中退出的最后一个命令(如果没有命令则为0) 如果没有找到或无法读取文件名,则为false。
或许很高兴知道: Is there a difference between “.” and “source” in bash, after all?
好吧,回答你的问题..你正在寻找其中一个:
system()您想要执行命令而不想这样做 捕获其输出
exec您不想返回调用perl脚本
backticks您要捕获命令的输出
open您要管道命令(作为输入或输出) 到你的剧本
示例系统()
system("command arg1 arg2 arg3");
或
system("command", "arg1", "arg2", "arg3");
示例exec
exec("ls -l");
请记住,exec()执行指定的命令并且永远不会返回到调用程序,除非因为指定的命令不存在而导致失败,并且exec参数是数组。
示例反引号
$result = `command arg1 arg2`;
甚至
@result = `command arg2 arg2`;
执行..命令,并将命令的输出返回给调用脚本
试
$result = `command 2>&1`;
获得sterr以及stdout
示例open()
open(PS,"ps -e -o pid,stime,args |") || die "Failed: $!\n";
while ( <PS> ) {
...
}
open()捕获命令的数据
open("command |"))
此外,您可以使用脚本生成的数据提供外部命令
open("| command")
只是管道播放;)
答案 1 :(得分:1)
通过采购.ini文件是什么意思? .ini文件是配置文件。你需要一个ini解析器。这是一个SO链接,可以帮助您:How can I access INI files from Perl?。
就个人而言,我使用了Tiny,我发现它很容易并且适合我的需要。