Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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,由于我的项目,我今天开始学习Perl脚本 让我先给你定义一下我的项目,这样你就能清楚地知道我想做什么 我正在为应用程序的测试运行编写脚本。当我的脚本执行时,它将从用户获取3个参数,然后它将为应用程序生成*.ini文件。在找到该文件之后,这个脚本将从不同的位置执行另一个perl脚本,第二个perl脚本将在folder1中为我提供两个文本文件。文件将是test.date1.txt和test.date11.txt,然后我的脚本将从不同位置为同一应用程序调用另一个perl脚本,第三个perl脚本还将在不

由于我的项目,我今天开始学习Perl脚本

让我先给你定义一下我的项目,这样你就能清楚地知道我想做什么

我正在为应用程序的测试运行编写脚本。当我的脚本执行时,它将从用户获取3个参数,然后它将为应用程序生成*.ini文件。在找到该文件之后,这个脚本将从不同的位置执行另一个perl脚本,第二个perl脚本将在folder1中为我提供两个文本文件。文件将是test.date1.txt和test.date11.txt,然后我的脚本将从不同位置为同一应用程序调用另一个perl脚本,第三个perl脚本还将在不同文件夹中为我提供两个不同的文本文件(test.date2.txt和test.date22.txt)。现在,我想分别重命名第一和第二文件夹中的文件第一次运行结果第二次运行结果,并比较它们之间的差异

到目前为止,我已经分配了我的输入参数,如果用户没有提供参数,那么应该向用户显示什么错误,并且我已经在在线教程中阅读了有关比较的内容,并编写了如下比较代码:

use Text::Diff;

my $diffs = diff 'test.date1.csv' => 'test.date2.csv';

print $diffs;
我被困在如何获取*.ini文件的源代码,然后运行其他perl脚本的问题上? 有人能帮我吗。这对我将是一个很大的帮助


注意:我今天开始编写脚本,如果我在定义项目时犯了一个愚蠢的错误,那么很抱歉。

你所说的源.ini文件是什么意思?.ini文件是一个配置文件。您需要一个ini解析器。这里有一个SO链接可以帮助您实现这一点:


就我个人而言,我使用了Tiny,我发现它很简单,适合我的需要。

你说的寻找.ini文件是什么意思?.ini文件是一个配置文件。您需要一个ini解析器。这里有一个SO链接可以帮助您实现这一点:


就我个人而言,我使用了Tiny,我发现它很简单,适合我的需要。

好的。。我想我明白了

你是说bashshell内置命令

source
在当前shell中执行作为参数传递的文件内容的

。文件名[参数]源文件名[参数]

要为当前运行的bash重新加载bash设置,可以执行以下操作

source ~/.bashrc

从当前shell中的文件名读取和执行命令 并返回最后执行的命令的退出状态 从文件名。如果文件名不包含斜杠,则在 路径用于查找包含文件名的目录。档案 在路径中搜索的不必是可执行的。当bash不在posix中时 模式,如果在路径中找不到文件,则搜索当前目录。 如果shopt builtin命令的sourcepath选项已关闭, 未搜索路径。如果提供了任何参数,它们将变为 执行文件名时的位置参数。否则 位置参数不变。返回状态是状态 脚本中退出的最后一个命令的数量(如果没有命令,则为0) 如果未找到或无法读取文件名,则为false

也许很高兴知道:


好吧,来回答你的问题。。您正在寻找其中一种:

  • 您想执行命令,但不想执行 捕获其输出

  • 您不想返回到调用perl脚本

  • 您希望捕获命令的输出

  • 您希望通过管道传输命令(作为输入或输出) 你的剧本

  • open("| command")
    

  • 示例系统()

  • 执行示例

    exec("ls -l");
    
    请记住,exec()执行指定的命令,并且永远不会返回调用程序,除非发生故障,因为指定的命令不存在,并且exec参数是数组

  • 反勾号示例

    $result = `command arg1 arg2`;
    
    甚至

    @result = `command arg2 arg2`;
    
    ..执行命令,并将命令的输出返回给调用脚本

    试一试

    为了得到斯特尔和斯特杜特

  • 示例打开()

    此外,还可以向外部命令提供脚本生成的数据

    open("| command")
    
    只是吹奏;)


  • 好的。。我想我明白了

    你是说bashshell内置命令

    source
    
    在当前shell中执行作为参数传递的文件内容的

    。文件名[参数]源文件名[参数]

    要为当前运行的bash重新加载bash设置,可以执行以下操作

    source ~/.bashrc
    

    从当前shell中的文件名读取和执行命令 并返回最后执行的命令的退出状态 从文件名。如果文件名不包含斜杠,则在 路径用于查找包含文件名的目录。档案 在路径中搜索的不必是可执行的。当bash不在posix中时 模式,如果在路径中找不到文件,则搜索当前目录。 如果shopt builtin命令的sourcepath选项已关闭, 未搜索路径。如果提供了任何参数,它们将变为 执行文件名时的位置参数。否则 位置参数不变。返回状态是状态 脚本中退出的最后一个命令的数量(如果没有命令,则为0) 如果未找到或无法读取文件名,则为false

    也许很高兴知道:


    好吧,来回答你的问题。。您正在寻找其中一种:

  • 您想执行命令,但不想执行 捕获其输出

  • 您不想返回到调用perl脚本

  • 您希望捕获命令的输出

  • 您希望通过管道传输命令(作为输入或输出) 你的剧本

  • open("| command")
    

  • 示例系统()

  • 执行示例

    exec("ls -l");
    
    请记住,exec()执行指定的命令,并且永远不会返回调用程序
    open("command |"))
    
    open("| command")