arrays - 将数组转换为哈希时遇到问题

标签 arrays perl hash perl-data-structures

我有一个数组,其中数组元素的值由制表符分隔。 例如:

客户端名称\t 所有者\t 日期\t 端口号。

我需要将其转换为哈希值,以便将其转储到 MySQL 数据库中。 像这样的东西:

my %foo = ();
$foo{date} = "111208";
$foo{port} = "2222";
$foo{owner} = "ownername";
$foo{name} = "clientname";   

我遇到的问题是存在重复的客户端名称,但它们存在于不同的端口号上。如果我使用 client_name 作为键将其直接转换为哈希,它将删除重复的客户端名称。 MySQL 表基于 {name} 和 {port} 建立索引。

有什么方法可以将其转换为哈希值而不丢失重复的客户端名称?

最佳答案

您将遍历您的文件,像您所做的那样构建哈希,然后将对该哈希的引用推送到数组中。像这样的东西:

foreach my $line ( @lines ) {
  # Make your %foo hash.
  push @clients, \%foo;
}

然后,当您插入数据库时​​,您只需迭代 @clients 中的元素即可:

foreach my $client ( @clients ) {
  $date = $client->{'date'};
  ...
}

编辑:如果您想将其转换为哈希值的哈希值,那么当您循环遍历行列表时,您可以执行以下操作:

foreach my $line ( @lines ) {
  # Make your %foo hash.
  $clients{$foo{'port'}} = \%foo;
}

然后您将获得使用端口号作为 key 的哈希值。

关于arrays - 将数组转换为哈希时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8435308/

相关文章:

c - C 中字符串定义的具体细节是什么?

c++ - 用户定义的无序映射哈希函数

ruby - 合并两个哈希的时间复杂度

shell - Perl 用变量替换文件的内容

regex - 在 cmdshell 中解析 fcinfo 输出

arrays - 如何将数组的每个成员乘以 perl 中的标量?

perl - 使用数组引用值动态创建哈希的哈希

php - 表单中的数组可以收集具有相同名称的多个值吗?

javascript - 如何减少和映射对象数组?

python - 与 ndarray 的矩阵乘法