2009-07-10 10 views

उत्तर

61
scalar keys %hash 

या सिर्फ

keys %hash 

यदि आप एक अदिश संदर्भ में पहले से ही कर रहे हैं, जैसे कि my $hash_count = keys %hash   या   print 'bighash' if keys %hash > 1000

संयोग से, $#array तत्वों की संख्या नहीं पाता है, यह अंतिम सूचकांक पाता है। scalar @array तत्वों की संख्या पाता है।

+0

$ # + 1 - हम तत्वों का कोई मिल जाएगा। मेरा मतलब है कि $ # – joe

+1

आह के लिए, मैं देखता हूं। खैर, मैं अभी भी '$ # सरणी + 1' पर 'स्केलर @ सरणी' की अनुशंसा करता हूं। :) – chaos

+0

क्या – joe

2

हम यह भी

my $keys = keys(%r) ; 
print "keys = $keys" ; 

0+(keys %r) 
+0

मुझे – joe

1

निम्नलिखित की तरह उपयोग कर सकते हैं एक कम वापस आ जाएगी कि आपके हैश में कुंजियों की संख्या। आप इसे पसंद कर सकते हैं, तो आप चीजों (या संक्षिप्तता) करने का $#array शैली के शौकीन हैं:

$#{$hash}; 

गंभीर संपादित करें: पर ... यह दिलचस्प है

होल्ड। यह काम करता है यदि आप इसे सरणी संदर्भ के रूप में उपयोग करना चाहते हैं, लेकिन यदि आप इसे बाहर उपयोग नहीं करते हैं। तो यह उपयोगी है आपके द्वारा दी गई है कि आप एक अस्थायी करने के लिए एक सरणी के रूप में अपनी चाबी निर्दिष्ट कर दी है अपने हैश के अंतिम कुंजी का उपयोग करना चाहते हैं: इस की जाँच करें:

%hash = ("barney" => "dinosaur", "elmo" => "monster"); 
@array = sort {$a cmp $b} keys %hash; 
print $array[$#{$hash}]; 
# prints "elmo" 
+1

में पोस्ट करने के बाद यह मिला इस जवाब ने मुझे आश्चर्यचकित कर दिया, इसलिए मैंने इसे आजमाया और ...यह काम नहीं करता है। – dave4420

+0

@ डेव: उपरोक्त महत्वपूर्ण संपादन की जांच करें। सर उठाने के लिए धन्यवाद। – Zaid

+5

@Zaid: '-1 # के साथ' $ # {$ हैश} 'को प्रतिस्थापित करें। '$ सरणी [-1] 'हमेशा का अर्थ है' @ सरणी '(और' $ सरणी [-2]' का अंतिम तत्व हमेशा दूसरे से अंत तक होता है)। '$ हैश''% हैश 'से असंबंधित है। आपके कोड में, पर्ल आपको एक अनिर्धारित चर का उपयोग एक सरणी संदर्भ के रूप में देखता है, इसलिए यह दिखाता है कि यह * एक सरणी संदर्भ है। 'चेतावनियों का उपयोग करने का प्रयास करें; सख्त उपयोग करें; 'शुरुआत में और देखें कि क्या पर्ल कहता है। – dave4420

0

लेकिन Perl 5.10 के बाद नहीं:

use feature ":5.10"; 
my %p =(); 
say $#%p; 

# $# is no longer supported 

और बदतर:

use feature ":5.10"; 
my %p = (a=>1, b=>2, c=>3); 
say $#{%p}; 

# -1 
-4

यह आसान तरीका में और हैश का किसी भी आकार के लिए काम करेंगे।

प्रिंट स्केलर कुंजी% हैश;

+2

क्षमा करें, लेकिन यह 'प्रिंट' का उपयोग करने के अलावा 7 साल पहले पोस्ट किए गए भारी, स्वीकृत उत्तर से अलग कैसे है? –

0

प्रिंट स्केलर कुंजी% हैश;

OR 

$ एक्स = कुंजी% हैश; प्रिंट $ एक्स;

(कुंजी% हैश सूची संदर्भ कि अदिश संदर्भ में आगे के परिवर्तन (अदिश चर करने के लिए जब बताए में चाबियों का मान) ।)

संबंधित मुद्दे

 संबंधित मुद्दे