我有一个如下输入文件:
start
f1="apple"
f2="banana"
f3="berry"
end
start
f1="guava"
f2="banana"
f3="berry"
end
start
f1="apple"
f2="cucumber"
f3="orance"
end
我打算创建一个值作为数组的哈希。
所有标签都将位于一个临时数组中,并且在标签之间有一个字段f1
,其值将是哈希的键。
从开始到结束,它将存储在临时数组中,一旦到达结束,数组作为哈希值被推送,键为最新字符串之后的值f1=
我已经编写了以下代码,但它不起作用。
有人可以在这里提出任何更正吗?
#!/usr/bin/perl -w
use strict;
use Data::Dumper;
open( FILE, "<", "temp2" );
my %FILEDATA;
my @tmp = ();
my $fruit = "";
while ( <FILE> ) {
chomp( $_ );
push @tmp, $_;
my @linefields = split( '=', $_ );
if ( $linefields[0] =~ /f1/ ) {
$fruit = $linefields[1];
}
if ( $_ =~ /end/ ) {
if ( $fruit eq "apple" ) {
if ( exists $FILEDATA{"apple"} ) {
push( @{ $FILEDATA{"apple"} }, @tmp );
}
else {
$FILEDATA{"apple"} = @tmp;
}
}
elsif ( $fruit eq "guava" ) {
if ( exists $FILEDATA{"guava"} ) {
push( @{ $FILEDATA{"guava"} }, @tmp );
}
else {
$FILEDATA{"guava"} = @tmp;
}
}
undef @tmp;
}
}
print Dumper( \%FILEDATA );