给定哈希文件,转储到内存中,我可以找到给定字段的行号

时间:2014-04-10 19:00:56

标签: perl file hash numbers line

例如,我有一个perl数据文件,哈希结构:  

  

第1行:$ VAR1 = {

     

第2行:k1 => V1,

     

第3行:k2 => {

     

第4行:k2.k1 => v2.v1

     

第5行:}

     

...

     

第n行:};

     

$ VAR1

现在通过读取哈希文件,它将转储哈希到内存中,并且顶部哈希引用是> >创建。

  

我的$ VAR1 = do $ hash_file;

我在perl代码中看到的是内存中的哈希值。如果给出$ VAR1-> {' k1'},我怎样才能获得"第2行"?

我没有看到有一种可靠的方法来使用哈希结构(或一般的perl数据结构)映射行号。

感谢。

1 个答案:

答案 0 :(得分:1)

使用原生哈希值无法可靠地执行此操作。 Perl不保证哈希的排序。事实上,在Perl的某些版本中,每次运行程序时哈希顺序都会不同。也就是说,您可以为正在读取的文件编写自定义解析器,并以此方式获取行号。当然,所有这些听起来都像XY problem。也许你应该退后一步,解释你为什么要做这件事。