比较文件,然后在perl脚本中输入坐标,然后使用预先编写的命令和坐标运行perl脚本

时间:2013-03-05 06:58:34

标签: perl batch-file perl-module mod-perl

我想要一个读取名为ships.txt的文件的批处理,然后从该文件中获取条目(每行一个)并将它们与文件扩展名为* .map的文件进行比较(比如test.map) ,寻找匹配,总是在一条线的尽头。然后取这些坐标(它们将是一对实际上很长的数字和以米为单位的数字)并将这些坐标插入到perl脚本中,从而生成一个文件。我想读取perl脚本生成的文件,并使用perl脚本副产品中的信息删除在另一个文件中找到的条目。

让我们从头开始。一步一步来 第1步:

  1. 我想要一个比较“test.map”和“ships.txt”的批次。如果它找到匹配,并且匹配将始终位于test.map中一行的末尾,我希望它能够获取地图坐标。
  2. 这就是test.map的样子:

    代码:

     Pt0=14497903.00,-813490.00,0.00,Mark 1
     Pt1=14417253.00,-812258.00,0.00,Mark 2
     etc...
    

    ships.txt看起来像这样:

     Mark 1
     Mark 3
     etc...
    

    所以我想让批处理读取ships.txt并寻找条目“Mark 1”或“Mark 2”等...,如果在test.map中找到它,就抓住坐标在“,0.00,Mark#”之前注意,坐标有两个小数位,它们也可以是负数。

    这是怎么做到的?

1 个答案:

答案 0 :(得分:3)

以下是如何做到的。

以下是如何在perl中open读取或写入文件的方法。然后你必须逐行read个文件。也许最好使用text::csv来读取文件。

使用split或text :: csv从第一个文件行创建数组,并将其存储在哈希中,key应该是该文件的最后一个字段。

当您遍历第二个文件时,您可以使用此哈希在第一个文件中检查它。

然后将结果写入文件。

尝试编写代码,如果您有特定问题,可以创建一个新代码。

或者你可以聘请某人为你做这件事。

此致