data structure Perl的简单数据结构
##data structure
hoh是考虑修正一下文件的:
https://github.com/kingkongmok/perl/blob/master/billConvert.pl
use strict;
use warnings;
open my$fh, "< /home/kk/test.txt" ;
my@array ;
my%hash ;
my$scalar ;
# scalar, array, hash, glob
#-------------------------------------------------------------------------------
# test for aoa
#-------------------------------------------------------------------------------
while ( <$fh> ) {
push @array,[split] ;
}
foreach my $aoa ( @array ) {
print join" ",@$aoa;
print "\n";
}
#-------------------------------------------------------------------------------
# test for hoa
#-------------------------------------------------------------------------------
while ( <$fh> ) {
chomp(my($key, $value) = split" ",$_,2);
$hash{$key}=[split" ",$value] ;
}
while ( my($keys,$values)=each%hash ) {
my@values = @$values ;
print "$values[1]\n" ;
}
#来一个补充,是作为insert value的。
my $longstring = "kk kingkong mok
ck camilla kuo" ;
my %hash ;
foreach my $item ( split/\n/,$longstring ) {
my ($k, $v) = split/\s+/,$item,2;
$hash{$k} = [ split/\s/,$v ] ;
my @array = ("home", "here" ) ;
foreach ( @array ) {
push @{$hash{$k}}, $_ ;
}
}
另外今天发现个很好的方法:
perl -e ‘$h{k}=[1,2]; push @{$h{k}},3; print join” “,@{$h{k}}, “\n”’
#-------------------------------------------------------------------------------
# test for aoh
#-------------------------------------------------------------------------------
while ( <$fh> ) {
chomp ;
push @array, { split" ",$_,2 } ;
}
while ( @array ) {
my($key, $value) = each shift @array ;
print "$key $value\n" ;
}
#-------------------------------------------------------------------------------
# test for hoh
#-------------------------------------------------------------------------------
while ( <$fh> ) {
chomp;
my($key1,$value1)=split" ",$_,2;
my($key2,$value2)=split" ",$value1,2;
$hash{$key1}{$key2}=$value2 ;
}
while ( my($key1,$value1)=each%hash ) {
while ( my($key2,$value2)=each%$value1 ) {
print "$key1 $key2 $value2\n" ;
}
}