Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 给定的散列文件,转储到内存中,我能找出给定字段的行号吗_Perl_File_Hash_Numbers_Line - Fatal编程技术网

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数据文件,哈希结构:

第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