2011-04-06 74 views
0

我完全不熟悉perl编程。请帮助我为此形成一个逻辑。如何搜索多个文件中的一个模式并从最新文件返回匹配的值?

我在一个目录中有很多文件,例如1.txt2.txt,3.txt,...,n.txt

每个文件都包含这种格式的多个数据。 ID列在文件中是唯一的。

ID | Name | Place 

1 | name1 | Chennai 

2 | name2 | Mumbai 

可以改变ID -1可以在不同的文件中重复。所以我需要搜索目录中所有文件中的每个ID,并将每个ID的属性写入另一个文件。生成的文件应该具有唯一的ID,并且属性应该来自具有最新创建日期的文件。

所以BASICALLY生成的文件将是ID和属性的主列表。

请在这方面的帮助。我只能读取文件并选择它并将其放入不同的文件中。任何人都可以帮助我继续前进。

谢谢你这么多提前

+0

Perl是您可以使用的唯一工具吗? – kurumi 2011-04-06 12:15:26

回答

3

使用带有ID作为密钥的哈希值,并从这些文件的值存储在散列时间戳顺序。
这里有一个原型:

my %data; 

for my $file (sort { -M $a <=> -M $b } @files) { 
    my @data = process_file($file); # an array of hashrefs like { id => 1, name => "name1", place => 'Chennai' } 
    $data{$_->{id}} = $_ for @data;   
} 

然后将数据从哈希存储文件。

+0

如何确保最新文件(即最新的时间戳)中ID的值优先? – 2011-04-06 12:47:20

+0

对不起,我现在看到了这种排序。 – 2011-04-06 12:51:04

+1

真的,虽然所有你需要的是一个散列 - 在时间戳顺序中存储文件中的值在该散列中,最终结果将按需要。然后只需转储出结果散列。无需存储每个ID的所有值。 – 2011-04-06 12:53:40

相关问题