tnfh.net
当前位置:首页 >> pErl中如何判断一个字符串是否在一个哈希中的值中... >>

pErl中如何判断一个字符串是否在一个哈希中的值中...

实在是看不太懂你的需求,想判断一个字符是否同时在哈希的键和对应键的值里面。 如果是的话,个人觉得类似的代码是: #!perluse strict;use warnings;my %hash = ( # xxxx);my $file_name = 'xxxx';open my $fh, '

事实上你这样做是没有意义的。如果存在该键,你就不是添加新的,只能改变原键值。所以只需要判断该键是否存在。 你如果有这种需求,大概是需要用二级哈希 (!exists($a{$key1}->{$key2})) and ($a{$key1}->{$key2} = $value);

使用Perl中的ref方法,可以判断一个引用是指向hash还是array。 if (ref($user) eq 'HASH') { # $user 指向的是HASH .... } elsif (ref($user) eq 'ARRAY') { # $user 指向的是数组 .... } else { .... }

就是这样用就可以。但你的引用有问题。 $reverse_singleMt{$valuemt}=$tempseq; 这句应该是 $reverse_singleMt{$keymt}=$tempseq;

试验的: C:\Users\Administrator>perl -e "@a=(1,2); $b=[@a]; @c=@$b ; print \"@a : $b : @c \" " 1 2 : ARRAY(0xa031c20) : 1 2 建议将 my @prime_r = @neme_hasg{$str}; 修改为 my @prime_r = @$neme_hasg{$str}; 试试

需要遍历哈希: $str = 'abc';%h = ('abc'=>123, 'def'=>456,);for $k (keys(%h)) { if($k eq $str) { $v = $h{$k}; printf("$k => $v.\n"); }}

@a = qw /hehe haha zz 123 456 && hehe/; $count{$_}++ foreach @a ; foreach $word (sort keys %count){ #--这里如果你遍历数组那么还是会输出重复,遍历hash就只有唯一的key print "$word has been appreared $count{$word} times! \n" }

my %hash; my @keys=sort { $hash{$a} $hash{$b} } keys %hash; 这样就可以了,直接循环用下面的。 foreach my $key ( sort { $hash{$a} $hash{$b} } keys %hash) { }

因为你的 %pinyin = () 放了在 while 入面, 所以, 每读一行, %pinyin 就被清空了一次. 照你的原意, 应该将 %pinyin=() 放在 while 之前. ( 其实不写这一行都可以 )

my %m = ('a', 'b', 'c', 'd');my %n = ('a', 'b', 'c', 'd');my %h = ('a', 'b', 'e', 'd');my %k = ('a', 'b', 'e', 'd');print same(\%m, \%n), "\n";print same(\%h, \%k), "\n";print same(\%m, \%k), "\n";sub same{my ($m, $n) = @_;retu...

网站首页 | 网站地图
All rights reserved Powered by www.tnfh.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com