【发布时间】:2012-09-11 05:27:33
【问题描述】:
我正在尝试解析包含数组哈希值的 .dmp 文件。我需要从数组中获取键值对,以便将它们存储到 mysql 数据库中。我尝试了几种方法,但无法使其正常工作。
文件中的代码如下所示: 我需要在数据库中每行存储一个数组哈希
$VAR={ 'booktodo-yzi07mwp-1102021083' => {
'_modtime' => [
1102021143
],
'version' => [
'25'
],
'pubnum' => [
'2332'
],
'_status' => [
'active'
],
'_user' => [
'lcm'
],
'description' => [
'Revise trademarks'
]
},
'booktodo-p8ekw9d3-1104950962' => {
'_modtime' => [
1104950986
],
'version' => [
'3.0'
],
'pubnum' => [
'S-2326-30'
],
'_status' => [
'active'
],
'_user' => [
'malz'
],
'description' => [
'Send out a request for install guide changes'
]
},
这是我目前所拥有的。我只是想访问数组中的元素 谢谢!
#!/usr/bin/perl
use DBI;
use strict;
use Data::Dumper;
use File::Slurp;
use lib "$ENV{HOME}/modules/lib";
my %VAR;
#open DMP;
open (FILE, "<./booktodo.dmp") or die "could not open file: $!";
undef $/;
#store evaled data in %VAR hash
%VAR = <FILE>;
close(FILE);
eval %VAR;
foreach my $loop (keys %VAR){
foreach my $hash (keys $VAR{$loop}){
for my $i (0..$#{$VAR{$loop}}){
print "$i= $VAR{$loop}[$i]\n";
}
}
}
【问题讨论】:
-
请显示您尝试过的代码,以便我们提出更改建议。
-
您的代码有几个问题:首先,
use warnings!其次,您正在将文件内容读入%VAR。使用warnings,您会收到“奇数个元素”警告。因为undef $` you slurp it all into the first key of%VAR. (What about yourFile::Slurp?). Tryprint Dumper \%VAR`,你会明白我的意思。请参阅@user5402's answer 了解如何完成。
标签: perl