2009-11-23 31 views
6

Tôi có một số mã từ http://www.hyllander.org/node/23 sử dụng $* ("dấu đô la" hay "ngôi sao đô la"), nhưng phiên bản của tôi về báo cáo perl:

$* is no longer supported at migrate.pl line 284. 

Bạn có biết những gì các tác dụng phụ của việc

$*=1 

Điều này có ảnh hưởng đến các chức năng như split hoặc mã thông báo hoặc biểu thức chính quy không?

+1

Tất cả các biến của Perl được ghi lại trong perlvar. –

+4

Trừ khi bạn đang sử dụng perl 5.10. Nó ghi lại tất cả các biến của Perl, chứ không phải các biến của Perl. – innaM

+0

Bạn có thể tìm thấy bất kỳ phiên bản tài liệu cụ thể nào, ví dụ: http://search.cpan.org/dist/perl-5.8.5 – ysth

Trả lời

16

Dưới đây là một phần của đầu ra của perldoc perlvar:

$ * Thiết lập một giá trị số nguyên-zero không phải làm nhiều dòng phù hợp trong một chuỗi, 0 (hoặc không xác định) để kể Perl rằng nó có thể giả sử rằng các chuỗi chứa một dòng đơn , với mục đích tối ưu hóa đối sánh mẫu. Các đối sánh mẫu trên các chuỗi chứa nhiều dòng mới có thể tạo ra các kết quả khó hiểu khi $ * bằng 0 hoặc không xác định. Mặc định là không xác định. (Mnemonic: * khớp với nhiều thứ.) Biến này ảnh hưởng đến việc giải thích chỉ "^" và "$". Một dòng mới có thể được tìm kiếm ngay cả khi "$ * == 0".

Sử dụng $ * không còn được dùng trong hiện đại Perl, được thay thế bởi "/ s" và "/ m" công cụ sửa đổi trên đối sánh mẫu.

Gán một giá trị không phải là số cho $ * gây ra một cảnh báo (và làm cho $ * hành nếu "$ * == 0"), trong khi gán một giá trị số đến $ * làm cho rằng một ngầm " int "được áp dụng trên giá trị .

+0

Cảm ơn! (Tôi đã gặp sự cố khi tìm kiếm '$ *' bằng google, vì công cụ tìm kiếm đó bỏ qua các từ khóa đó.) – scraimer

+2

@scraimer: Trước tiên, bạn nên tham khảo tài liệu được cài đặt trên máy tính của mình: '$ perldoc perltoc' –

+0

Ngoại trừ tài liệu được cài đặt trên máy tính của tôi là dành cho perl 5.10, và vì '$ *' đã bị ngừng bởi phiên bản đó, tài liệu không còn nữa. – scraimer

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