【问题标题】:How can i Search multiple files one pattern and return the matched values from the latest file?如何以一种模式搜索多个文件并从最新文件中返回匹配的值?
【发布时间】:2011-04-06 21:24:40
【问题描述】:

我对 perl 编程完全陌生。请帮助我为此形成一个逻辑。

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

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

ID | Name  | Place   

1  | name1 | Chennai

2  | name2 | Mumbai

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

因此,生成的文件基本上是 ID 和属性的主列表。

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

非常感谢您提前

【问题讨论】:

  • Perl 是唯一可以使用的工具吗?

标签: perl


【解决方案1】:

使用带有 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;        
}  

然后将哈希中的数据存储到文件中。

【讨论】:

  • 如何确保最新文件中的 ID 值(即最近的时间戳)优先?
  • 确实,尽管您只需要一个哈希 - 将文件中的值按时间戳顺序存储在该哈希中,最终结果将符合要求。然后只需转储生成的哈希。无需存储每个 ID 的所有值。
猜你喜欢
  • 1970-01-01
  • 2020-01-25
  • 2013-04-03
  • 2012-09-27
  • 1970-01-01
  • 2021-10-12
  • 2019-04-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多