generuje błąd, jeśli używasz symbolicznych odniesień (np. Ciągi znaków do reprezentowania nazw symboli). Generuje błąd, jeśli używasz zmiennej bez deklarowania jej (zachęca to do użycia zmiennych "zmiennych" o nazwie "my
", ale jest również spełniona, jeśli prawidłowo zadeklarujesz globale pakietów). Generuje również błąd, jeśli pozostawisz w skrypcie bezmyślne słowa (nie cytowane ciągi, w zasadzie według definicji cytatów Perla). W przypadku "strict
" można włączać i wyłączać dowolną z trzech kategorii zwężeń, a moja robię to w ramach bloków o ograniczonym zasięgu. Najlepszą praktyką jest włączanie ograniczeń, ale czasami uzasadniony kod wymaga, aby niektóre z jego funkcji były wyłączone lokalnie. Trzeba jednak długo i mocno zastanawiać się, czy jest to naprawdę konieczne i czy ich rozwiązanie jest idealne. O ograniczeniach można przeczytać w POD, zatytułowanym "strict".
use warnings
generuje komunikat ostrzegawczy na podstawie wielu kryteriów, które opisano w POD "perllexwarn". Te ostrzeżenia nie mają nic wspólnego ze zwężeniami, ale raczej należy zwrócić uwagę na najczęstsze "błędy", które można napotkać w ich programowaniu. Najlepiej stosować ostrzeżenia podczas pisania skryptów. W niektórych przypadkach, gdy wiadomość może być niepożądana, pewna kategoria ostrzeżenia może być wyłączona lokalnie w zasięgu. Dodatkowe informacje opisano w "ostrzeżeniach".
use diagnostics
czyni ostrzeżenia bardziej gadatliwymi, aw środowisku rozwojowym lub naukowym, szczególnie wśród przybyszów, jest to wysoce pożądane. Diagnostyka prawdopodobnie zostanie pominięta w "produkcie końcowym", ale w fazie rozwoju mogą być naprawdę miłym dodatkiem do generowanych normalnie wiadomości. O diagnostyce można przeczytać w "Diagnostyce Perla POD".
Nie ma powodu, aby zmuszać się do korzystania tylko z jednej z powyższych opcji. W szczególności należy stosować ostrzeżenia i używać stricte, które powinny być używane zarówno w nowoczesnych programach Perla.
We wszystkich przypadkach (z wyjątkiem diagnostyki, której używasz do opracowania), indywidualne zwężenia lub ostrzeżenia mogą być wyłączone leksykalnie. Co więcej, ich błędy mogą zostać uwięzione za pomocą eval{ .... }
, z blokami try/catch o wartości Try::Tiny
i kilkoma innymi sposobami. Jeśli pojawi się obawa związana z informacją potencjalnego napastnika o więcej informacji o skrypcie, wiadomości mogą zostać przekierowane do pliku dziennika. Jeśli istnieje ryzyko, że wspomniany plik dziennika zużyje dużo miejsca, istnieje większy problem, a źródło problemu powinno zostać rozwiązane lub w rzadkich przypadkach po prostu komunikat jest wyłączony.
Obecnie programy Perl powinny być bardzo surowe/ostrzeżenia zgodne z najlepszą praktyką.
Powód zamknięcia głosowania? –
Nie głosowałem, aby zamknąć, ale podejrzewam, że to dlatego, że ostrzeżenia i surowe czynią zupełnie inne rzeczy. To nie jest pytanie, ani - ani pytanie - użyj ich obu. –
Dzięki za zmiany. [@starblue: do edycji tytułu i @tchrista w celu dodania dodatkowych tagów] –