【发布时间】:2013-04-16 14:38:35
【问题描述】:
我有一个问题希望有人能提供帮助。
我有一个制表符分隔的文本文件,名为FILE.txt:
(注意缺少两个年龄):
BOY Fred Smith 56
BOY David Jones 18
GIRL Anne Roberts
BOY Fred Andrews
GIRL Hannah Williams 27
我想将文本文件读入哈希/哈希引用数据结构(如下所示):
open my $f, '<', 'FILE.txt';
my $details;
while (<$f>) {
chomp;
my ( $gender, $firstName, $middleName, $lastName, $age) = split("\t");
$details->{$gender}->{$firstName}->{$lastName} = "$age";
}
- 这是制作结构的正确方法吗,因为有时文本文件中可能没有年龄?
有了这个散列/散列参考结构,我想打印人的详细信息,但因为有些人没有年龄。这会导致散列中的空值和未初始化值等问题。
这是它产生的数据:
{
BOY => { David => { Jones => 18 }, Fred => { Andrews => "", Smith => 56 } },
GIRL => { Anne => { Roberts => "" }, Hannah => { Williams => 27 } },
}
- 如果此人没有在
FILE.txt中指定年龄,您如何处理? - 如果这个数据结构是可变深度的,你如何正确地制作它,然后正确地访问它?
如果哈希/哈希引用具有固定/已知深度,我知道如何创建和访问它的不同部分,但是当数据结构可能具有不同深度时,最好的方法是什么?
非常感谢您的帮助,谢谢
【问题讨论】:
-
年龄都在同一深度,但有时它们是空的。
-
@Barmar - 所以这些可以为空,最佳实践是什么?
-
对于您的数据,这似乎是最佳做法,因为您的键中有重要数据。如果您不存储空值,则会丢失名称。如何处理这些空值取决于应用程序的其余部分在做什么。
标签: perl loops hash data-dumper hashref