Nếu tôi hiểu bạn, có lẽ bạn không cần một mảng số 0; thay vào đó, bạn cần một mã số băm. Các phím băm sẽ được các giá trị trong mảng khác và các giá trị hash sẽ là số lần giá trị tồn tại trong mảng khác:
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;
Output:
0 => 3
1 => 1
2 => 2
3 => 3
4 => 1
Để trả lời câu hỏi cụ thể của bạn trực tiếp hơn, để tạo một mảng được điền bằng một loạt các số 0, bạn có thể sử dụng kỹ thuật trong hai ví dụ sau:
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.
Hiển thị cho chúng tôi mã bạn đang gặp sự cố. * Tại sao * bạn cần nó đặt thành 0? [Vấn đề XY] (http://www.perlmonks.org/?node=XY%20problem) – Daenyth
Nó là một cái gì đó tương tự như thế này. Tôi có một mảng khác với các số như [0,0,0,1,2,2,3,3,3,4] bây giờ tôi phải đếm số 0,1,2,3,4 vì vậy tôi sẽ sử dụng một mảng khác ... và lưu trữ số đếm trong chỉ mục đã cho. vì vậy tôi sẽ có arr [0] = 3 arr [1] = 1 arr [2] = 2 arr [3] = 3 arr [4] = 4 như vậy là và khi tôi gặp một yếu tố tôi làm ... arr [i] = arr [i] + 1; cho điều này tôi cần phải bắt đầu với các yếu tố được bắt đầu bằng 0. Mã trên hoạt động. Nhưng nó cũng ném một cảnh báo. – jerrygo
Bạn có thể thực hiện $ arr [i] ++ thay vì $ arr [i] = $ arr [i] + 1; cũng nếu mảng của bạn trống, $ arr [i] ++ sẽ vẫn đặt $ arr [i] thành 1; – MkV