배열의 해시 해시가 포함 된 .dmp 파일을 구문 분석하려고합니다. MySQL 데이터베이스에 저장할 수 있도록 배열에서 키 값 쌍을 가져와야합니다. 몇 가지 방법을 시도했지만 제대로 작동하지 않습니다. 파일의배열 해시의 해시 구문 분석 Perl
코드는 다음과 같습니다 나는 데이터베이스
$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";
}
}
}
변경 사항을 제안 할 수 있도록 시도한 코드를 보여주십시오. – stu42j
코드에 몇 가지 문제가 있습니다. 첫째, **'use warnings' **! 둘째, 파일 내용을'% VAR '로 읽는 것입니다. 'warnings'을 사용하면 '홀수 개의 요소'경고가 나타납니다. 'undef $ \'때문에'% VAR'의 첫번째 키에 모든 것을 넣습니다. (당신의'File :: Slurp'은 어떨까요?). 'print Dumper \ % VAR'을 시도하면 무슨 뜻인지 알 수 있습니다. 어떻게 할 수 있는지 [@ user5402 's answer] (http://stackoverflow.com/a/12359677/1331451)를 참조하십시오. – simbabque