Tôi muốn áp dụng một chức năng cho mọi mục trong danh sách và lưu trữ các kết quả tương tự như map(function, list)
trong python.Làm cách nào để áp dụng một hàm vào danh sách bằng bản đồ?
Cố gắng để vượt qua một chức năng để lập bản đồ, nhưng đã nhận lỗi này:
perl -le 'my $s = sub {}; @r = map $s 0..9'
panic: ck_grep at -e line 1.
cách thích hợp để làm điều này là gì?
Nice câu trả lời, cũng lưu ý rằng trong khối bản đồ, không giống như hầu hết các khối khác, bạn có thể _not_ cài đặt pragmas từ vựng hay làm những hành động thời gian biên dịch khác ('sử dụng ... '/' no ... '). –
Bạn có thể sử dụng * sử dụng * và * không * trong * bản đồ DANH SÁCH BLOCK * dạng * bản đồ *, không có trong * bản đồ EXPR DANH * biểu mẫu, nó chỉ là nếu bạn sử dụng chúng, bạn có thể cần phải phân biệt khối từ một biểu thức với hàng đầu; Ngoài ra, bạn có thể sử dụng * làm BLOCK * làm biểu thức và có thể chứa * no * và * use *. Sử dụng nghiêm ngặt; @a = 1..10; my @b = map {; không có 'vars' nghiêm ngặt; $ x = $ _ + 1; $ x} @a; my @c = map {do {no strict 'vars'; $ x = $ _ + 1; $ x}} @a; – MkV
Cũng đáng chú ý là * $ _ * trong vòng lặp là một bí danh cho các phần tử mảng, do đó, sửa đổi nó sửa đổi mảng nguồn, mà không được khuyến khích cho mã rõ ràng. – MkV