2010-03-10 33 views
5

Tại sao không có lỗi do strict:

use strict; 

$a = $a + 1; 

Trả lời

14

$ a và $ b là globals đặc biệt được sử dụng bởi sort, vì vậy họ luôn xác định. Hãy thử nó với $ c thay vào đó và bạn sẽ nhận được một lỗi.

+7

Lưu ý rằng điều này có nghĩa là sử dụng $ a và $ b cho các mục đích khác là một ý tưởng thực sự tồi. (Sử dụng biến có tên $ c cũng tệ, nhưng ít hơn và vì các lý do khác.) – ysth

5

$a là biến toàn cầu đặc biệt. Nó không cần phải được khai báo. Xem perldoc perlvar.

2

Trong Perl, có một số biến toàn cục. Ở đây $a$b được sử dụng trong chức năng sort.

Tôi nghĩ rằng bạn có thể thấy, giống như trong bản Tuyên Bố này:

sort { $a <=> $b } @array_name ; 
6

Mặc dù strict không khiếu nại về việc đặc biệt $a$b biến, perlcritic sẽ phát hiện việc sử dụng của họ:

kỳ diệu các biến phải được chỉ định là "địa phương" ... (Mức độ nghiêm trọng: 4)

Các vấn đề liên quan