Chinaunix
标题:
文件怎么读入hash
[打印本页]
作者:
609854
时间:
2013-11-12 14:07
标题:
文件怎么读入hash
大神,帮忙看下整个文件怎么读进hash。
DATA:
[NAME]
TOM
[AGE]
23
[TALL]
180CM
[favorite person]
Lily
Jimmy
复制代码
一个一个的读我用的是:
while(<DATA>){
my $match_key = shift;
if (m/$match_key/ig..m/\[.*\]/ig){
print;
}
}
复制代码
作者:
pitonas
时间:
2013-11-12 14:07
my ( $value, @hash ) = 1;
while (<DATA>) {
next if /^\s*$/;
if (/\[(.*)\]/) {
push @hash, $value == 0 ? ( '', $1 ) : $1;
$value = 0;
}
elsif ($value) {
chomp;
ref $hash[-1]
? push @{ $hash[-1] }, $_
: ( $hash[-1] = [ $hash[-1], $_ ] );
}
else {
chomp;
push @hash, $_ and $value++;
}
}
my %hash = @hash;
print $hash{NAME};
__DATA__
[NAME]
TOM
[AGE]
23
[TALL]
180CM
[favorite person]
Lily
Jimmy
[NO Value]
[LAN]
perl
复制代码
回复
1#
609854
作者:
mcshell
时间:
2013-11-12 16:42
回复
1#
609854
my $h;
while(<DATA>){
next if /^\s*$/;
/[[]([^]]+)/?$h->{$1}=():push @{$h->{$1}},$_;
}
print "$_=>",@{$h->{$_}},"\n" for keys $h;
__DATA__
[NAME]
TOM
[AGE]
23
[TALL]
180CM
[favorite person]
Lily
Jimmy
[NO Value]
[LAN]
perl
复制代码
作者:
609854
时间:
2013-11-12 16:59
回复
2#
pitonas
ref $hash[-1]
? push @{ $hash[-1] }, $_
: ( $hash[-1] = [ $hash[-1], $_ ] );
这个是什么意思。
作者:
rubyish
时间:
2013-11-12 22:48
回复
3#
mcshell
/[[]([^]]+)/?$h->{$1}=():push @{$h->{$1}},$_;
复制代码
作者:
mcshell
时间:
2013-11-13 08:56
{:3_190:} {:3_190:}
回复
5#
rubyish
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2