Tại sao không có lỗi do strict
:
use strict;
$a = $a + 1;
Tại sao không có lỗi do strict
:
use strict;
$a = $a + 1;
$ 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.
$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.
Trong Perl, có một số biến toàn cục. Ở đây $a
và $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 ;
Mặc dù strict
không khiếu nại về việc đặc biệt $a
và $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)
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