2012-06-08 10 views
7

मेरे पास एक सरणी है @array। मैं जानना चाहता हूं कि सरणी के कौन से मान हैंश की चाबियाँ बनाते हैं,% हैश कहते हैं। क्या लूप का उपयोग करने के अलावा इसे करने का कोई आसान तरीका है?पर्ल में हैश के चाबियाँ हैं या नहीं, तो सरणी के मान क्या हैं?

जैसे

@array = qw (a b c); 
%hash = (a => 1, b=> 2);  

इस मामले में यह होना चाहिए सिर्फ उत्पादन 'एक' और 'बी'।

+3

यदि आप 'सख्त का उपयोग का उपयोग कर रहे कुछ bareword समस्याओं मिल गया है,' (और आप होना चाहिए)। –

+0

दाएं। यदि उस सरणी में शाब्दिक अक्षर 'ए', 'बी', और 'सी' होना चाहिए, तो यह या तो '@array = (' a ',' b ',' c ') होना चाहिए;' या '@array = qw (abc); ' –

+0

@ जोनाथन लेफ्लर: मैं सख्त उपयोग करता हूं, मैंने इसे उदाहरण में शामिल नहीं किया है। – Jordan

उत्तर

17

यह करना चाहिए:

my @array = qw(a b c) ; 
my %hash = (a => 1 , b => 2) ; 

my @result = grep { exists $hash{$_} } @array ; 
संबंधित मुद्दे