Perl 给定的散列文件,转储到内存中,我能找出给定字段的行号吗
例如,我有一个perl数据文件,哈希结构: 第1行:$VAR1={ 第2行:k1=>v1 第3行:k2=>{ 第4行:k2.k1=>v2.v1 第5行:} 第n行:} $VAR1 现在通过读取散列文件,它将被转储到内存中,并且顶部的散列引用被>>创建 my$VAR1=do$hash\u文件 我在perl代码中看到的是内存中的散列。如果给定$VAR1->{'k1'},如何获得“第2行” 我看不出有一种可靠的方法可以将行号映射到哈希结构(或者,通用的perl数据结构)Perl 给定的散列文件,转储到内存中,我能找出给定字段的行号吗,perl,file,hash,numbers,line,Perl,File,Hash,Numbers,Line,例如,我有一个perl数据文件,哈希结构: 第1行:$VAR1={ 第2行:k1=>v1 第3行:k2=>{ 第4行:k2.k1=>v2.v1 第5行:} 第n行:} $VAR1 现在通过读取散列文件,它将被转储到内存中,并且顶部的散列引用被>>创建 my$VAR1=do$hash\u文件 我在perl代码中看到的是内存中的散列。如果给定$VAR1->{'k1'},如何获得“第2行” 我看不出有一种可靠的方法可以将行号映射到哈希结构(或者,通用的perl数据结构) 谢谢 使用本机哈希无法可靠
谢谢 使用本机哈希无法可靠地完成此操作。Perl不保证哈希的顺序。事实上,在某些版本的Perl中,每次运行程序时,哈希顺序都会不同。也就是说,您可以为正在读取的文件编写自定义解析器,并通过这种方式获取行号。当然,所有这一切听起来像是一场灾难。也许你应该退后一步,解释一下为什么要这样做。行号有什么意义?如果顺序很重要,不要使用散列,而是使用(散列的)数组。此外,您不应该在没有错误检查的情况下使用
do
;使用require
或use
。