यदि मैं आपको समझता हूं, तो शायद आपको ज़ीरो की एक सरणी की आवश्यकता नहीं है; बल्कि, आपको हैश की आवश्यकता है। हैश कुंजी अन्य सरणी में मान होंगे और हैश मान समय की संख्या मूल्य अन्य सरणी में मौजूद होगा:
use strict;
use warnings;
my @other_array = (0,0,0,1,2,2,3,3,3,4);
my %tallies;
$tallies{$_} ++ for @other_array;
print "$_ => $tallies{$_}\n" for sort {$a <=> $b} keys %tallies;
आउटपुट:
0 => 3
1 => 1
2 => 2
3 => 3
4 => 1
अपने विशिष्ट प्रश्न का उत्तर देने अधिक सीधे, एक सरणी शून्यों का एक समूह के साथ आबादी बनाने के लिए, आप इन दो उदाहरणों में तकनीक का उपयोग कर सकते हैं:
my @zeroes = (0) x 5; # (0,0,0,0,0)
my @zeroes = (0) x @other_array; # A zero for each item in @other_array.
# This works because in scalar context
# an array evaluates to its size.
हमें वह कोड दिखाएं जिसमें आपको समस्या है। * क्यों * आपको इसे 0 पर सेट करने की आवश्यकता है? [एक्सवाई समस्या] (http://www.perlmonks.org/?node=XY%20problem) – Daenyth
यह कुछ इसी तरह है। मेरे पास एक और सरणी है जैसे [0,0,0,1,2,2,3,3,3,4] अब मुझे 0,1,2,3,4 की संख्या गिननी है तो मैं एक और सरणी का उपयोग करूंगा ... और दिए गए इंडेक्स में गिनती स्टोर करूंगा। तो मैं होगा आगमन [0] = 3 आगमन [1] = 1 आगमन [2] = 2 आगमन [3] = 3 आगमन [4] = 4 के रूप में तो और जब मैं एक तत्व मैं मुठभेड़ करें ... arr [i] = arr [i] + 1; इसके लिए मुझे 0 के साथ initilized तत्वों के साथ शुरू करने की जरूरत है। उपरोक्त कोड काम करता है। लेकिन यह भी एक चेतावनी फेंकता है। – jerrygo
आप $ arr [i] = $ arr [i] + 1 के बजाय $ arr [i] ++ कर सकते हैं; अगर आपकी सरणी खाली है, तो $ arr [i] ++ अभी भी $ arr [i] से 1 सेट करेगा; – MkV