Biểu tượng toàn cầu yêu cầu tên gói rõ ràng? Tại sao điều này xảy ra và các trường hợp khác nhau có thể gây ra lỗi này là gì?Biểu tượng toàn cầu yêu cầu tên gói rõ ràng
Trả lời
Có một cái nhìn tại perldiag:
biểu tượng toàn cầu "% s" đòi hỏi tên gói rõ ràng
(F) Bạn đã nói "sử dụng nghiêm ngặt" hoặc "sử dụng vars nghiêm ngặt", điều này cho biết tất cả các biến phải là phạm vi từ vựng (sử dụng "của tôi" hoặc "trạng thái"), được khai báo trước bằng cách sử dụng "của chúng tôi" hoặc rõ ràng đủ điều kiện để nói biến toàn cục nào nằm trong (sử dụng "::").
Để cụ thể nói điều gì đã gây ra nó trong mã của bạn, bạn cần phải đăng mã của mình.
Lỗi này là outputted và kịch bản của bạn dừng lại vì bạn đã có use strict
hoặc một dẫn xuất của nó. Lỗi xảy ra vì chương trình của bạn đang gọi một biến ngoài phạm vi.
Bạn có thể đã sử dụng địa phương hoặc nội bộ của tôi trong một thủ tục/chức năng phụ, nhưng đang cố gắng sử dụng nó trong một thủ tục khác hoặc bên ngoài cuộc gọi chức năng.
sub foo{ my $bar=0; our ($soap) = 1; } foo(); print $bar , "\n"; # does not work w/ strict -- bar is only in the scope of the function, not globally defined print $main::bar , "\n"; # will run, but won't be populated print $soap , "\n"; # does not work w/ strict -- the package isn't defined print $main::soap , "\n"; # will run and work as intended because of our
Bạn đang sử dụng use strict;
tuyên bố có nghĩa là mã của bạn phải nằm trong phạm vi quy định của văn bản lệnh perl.
Quy định viết lệnh Perl nào đang bị vi phạm? – alex
Điều này cũng có thể xảy ra khi tuyên bố trước đó chưa hoàn tất.
use strict;
sub test;
test()
# some comment
my $x;
perl tại phàn nàn với thông báo lỗi sau:
my "
Global symbol "$x" requires explicit package name
Các lỗi không nằm trong tuyên bố "tôi", nhưng đồng chấm phẩy còn thiếu (;
) tại test()
.
Cảm ơn bạn! Tôi đã xé tóc ra. – Zack
sử dụng biến trạng thái mà không cần use feature "state"
hoặc use v5.10
trừ khi từ khóa được viết là trạng thái CORE ::.
Trong thực tế, nếu bạn sử dụng use strict;
và ở đâu đó bạn bỏ lỡ ;
ở phần cuối của một tuyên bố, sau đó những điều khoản sau đây (họ có cú pháp hoàn hảo) có thể làm tăng biểu tượng toàn cầu đòi hỏi tên gói rõ ràng cũng.
- 1. Perl yêu cầu tên gói rõ ràng
- 2. Yêu cầu không rõ ràng về Generic ContinueWith
- 3. TDD với các yêu cầu không rõ ràng
- 4. Đại biểu trong IOS - Một số yêu cầu làm rõ
- 5. Gói yêu cầu NTP
- 6. ActiveModel :: Serializer có yêu cầu hiển thị cuộc gọi rõ ràng không?
- 7. Đối tượng toàn cầu Javascript
- 8. Đặt Biến Toàn cầu cho Thời lượng của Yêu cầu
- 9. ServiceStack toàn cầu Yêu cầu Lọc Không Firing
- 10. Truy cập yêu cầu web trên toàn cầu ở Tornado
- 11. Symfony2 Định tuyến các yêu cầu toàn cầu {_locale}
- 12. Thiết bị đánh chặn yêu cầu/phản hồi toàn cầu
- 13. JavaScript: biến toàn cầu sau khi Ajax yêu cầu
- 14. Duplicate lỗi biểu tượng - toàn cầu liên tục
- 15. Gói cài đặt R toàn cầu
- 16. MVC3 toàn cầu: cần lọc toàn cầu trước khi ràng buộc
- 17. Lỗi: "Tên lớp chỉ được chấp nhận nếu xử lý chú thích được yêu cầu rõ ràng"
- 18. Git thẻ toàn cầu --- rõ ràng là xấu, nhưng tại sao?
- 19. Tại sao enums yêu cầu một diễn viên rõ ràng để int loại?
- 20. django sửa đổi đối tượng yêu cầu
- 21. đối tượng 'toàn cầu' trong Node.js
- 22. JSF: yêu cầu ban đầu và yêu cầu đăng lại?
- 23. Xóa vùng tên khỏi yêu cầu SOAP
- 24. Yêu cầu mô hình và yêu cầu GET?
- 25. Các biểu mẫu Django yêu cầu
- 26. Yêu cầu nhiều yêu cầu PHP
- 27. sử dụng pip để cài đặt các gói tại địa phương mặc dù các yêu cầu toàn cầu hài lòng
- 28. Không gian tên PHP Toàn cầu
- 29. Yêu cầu ký tên với python-oauth2
- 30. Tên yêu cầu HTTP + Phản hồi
Mã mẫu perl? Xem http://stackoverflow.com/q/4257179/10468 hoặc tìm kiếm câu hỏi về mô-đun perl. Xem thêm (offsite) http://www.sitepoint.com/forums/showthread.php?501379-Perl-require-and-variables – DarenW