在perl中加入两个文件(表)

时间:2013-03-27 20:37:54

标签: perl join

我想使用perl将两个文件合二为一。更具体地说:

我有一个包含列的txt文件:

Irrelevant / Key / Various1 / ... / Various N

和第二个带有列的 txt 文件:

Key / Price

我想读取这两个文件并加入它们,以便我有:

Key / Various1 / ... / Various N / Price 

表示第一个表的所有行。 我该怎么做?我没什么经验。

我需要一个表( hash ?)然后我可以在我的脚本或新文件中进一步处理,然后我可以阅读并执行其余的过程。

任何帮助将不胜感激。


感谢讽刺...我已经说过我没有经验而且我不知道ahshes是如何工作的,这似乎是解决方案......我发现了这个代码并试图使用它,但它不起作用:

我像这样加载第一个文件:     $列表{$文件} {$系统} {$ master_file_name} {$符号} = $价格;

和第二个:     $ map {$ file} = $ charge;

我加入他们:     %combined =(%map,%list);

foreach my $system (keys(%combined))
{
my $n=0;
my $i=0;
      my $workbook = Spreadsheet::WriteExcel->new("system.xls");
my $worksheet   = $workbook->add_worksheet("summary_unmapped_master_file");
map{$worksheet->write($n, $i++,$_)}   ("list", "charge", "System", "MAster_file", "symbol", "price");
$n++;$i=0;
foreach my $value (sort{$combined{$system}{$b} <=> $combined{$system}{$a}} keys %{$combined{$system}})
{   
    map{$worksheet->write($n, $i++,$_)} ($value,$list{$system}{$value});
    $n++;$i=0;
}

}

2 个答案:

答案 0 :(得分:3)

我通常鼓励海报展示一些作品。这是一种善意的表现,你已经尝试过,而某些东西不起作用,而不是要求我们为你做你的工作。因此,我不会举一个例子。那就是说,我想指出你Tie::Array::CSV。它可以使这个任务变得更加简单。

答案 1 :(得分:0)

  • 打开包含价格的文件
  • 一次读取价格文件,并将数据放入键上的哈希值。
  • 打开其他文件
  • 打开输出文件
  • 对于另一个文件中的每一行
    • 在价格哈希
    • 中查找匹配价格
    • 将价格附加到现有记录的末尾
    • 将新记录写入输出文件