Wciąż jestem nowy w Perlu. Ponieważ bloki BEGIN
są uruchamiane podczas kompilacji, czy nie może rozprzestrzeniać się wirus lub utrata danych następuje po prostu kompilacji? Czy Perl robi wszystko, aby to powstrzymać? Jeśli tak, to czy kod w blokach BEGIN
może działać inaczej poza tym blokiem?Czy blok BEGIN w Perlu może rozprzestrzeniać wirusa lub utracić dane?
Odpowiedz
Tak na wszystkie te pytania. Identyfikator Eclipse IDE był na to podatny. To discussed in more detail here.
Podobnie jak w przypadku całego oprogramowania, należy unikać pobierania i uruchamiania czegokolwiek ze źródła, któremu nie ufasz. CPAN jest ogólnie godny zaufania; chociaż nie jestem świadomy, że ktoś celowo uwalnia fałszywy kod do CPAN, możliwe, że tak się stało.
Można uniknąć uruchomiony kod podczas kontroli kompilacji z $^C flag, np .:
BEGIN { load_data_from_db() unless $^C; }
Należy pamiętać, że czasami jest to cecha. Bloki BEGIN wewnątrz modułów mod_perl są wykonywane tylko raz, po pierwszym załadowaniu. Masz więc prostą składnię do inicjowania na poziomie strony w tym samym skrypcie i umieszczasz ją "blisko" kodu, który pomaga.
Czasami jest to przydatne do pisania skomplikowanego kodu inicjalizacyjnego, którego nie chcesz umieszczać u góry skryptu.
Ale głównie chodzi tylko o kompatybilność tematyczną z awk.
Jest tam o wiele więcej niż wygląda jak awk. Bloki BEGIN są bardzo przydatne do sekwencjonowania rzeczy. –
Czy to nie jest dokładnie to, co powiedziałem? Zanim zdanie, które zdecydowałeś się wybrać, było sporo tekstu. –
@Andy - powiedziałeś "głównie". Podczas mojego wieloletniego rozwoju oprogramowania Perl użyłem (i zobaczyłem, że go użyłem) bloków BEGIN z wielu powodów na miriadach okazji, a nie TYLKO czy widziałem, że użyłem "kompatybilności tematycznej z awk". – DVK
chromatyczna wyjaśnia how a Perl program works.
- 1. Dlaczego ten blok Perl BEGIN działa inaczej w debugerze?
- 2. Różnica między wektorami :: begin() i std :: begin()
- 3. Jak odzyskać dane z MongoDB w Perlu?
- 4. Czy blok Obj-C może wykonać się sam?
- 5. Deklaracja zmiennych w bloku BEGIN
- 6. Czy zakres zmiennej Jinja może wykraczać poza wewnętrzny blok?
- 7. Czy powinienem preferować hashe lub hashrefy w Perlu?
- 8. Skrypt dla wątków w Perlu lub Bash?
- 9. Jak rozprzestrzeniać tempdb na wielu plikach?
- 10. Czy mamy autochomp w Perlu?
- 11. W Perlu, czy istnieje sposób na powiązanie ze skrytką?
- 12. blok jqueryUI powiedzieć, czy strona lub konkretny element jest zablokowany
- 13. Uruchamianie TRANSACTION w kontekście BEGIN ... END lub poza i składnia LOOP
- 14. Jaka jest przydatność bloków CHECK, UNITCHECK i INIT w Perlu?
- 15. Jak utworzyć lub przetestować dla NaN lub nieskończoności w Perlu?
- 16. Przechodząc nazwę kolumny do R tidyr rozprzestrzeniać
- 17. Klient Microsoft OneDrive API w Perlu nie może uzyskać tokena
- 18. zawsze blok @ * z pojedynczym niepustującym przydziałem - dobry, zły lub nieistotny?
- 19. Sprawdź plik do przesłania dla wirusa w MVC3
- 20. Różnica między front() i begin()
- 21. Ruby sprawdź czy blok jest zerowy
- 22. Czy ffmpeg może wyodrębniać dane z zamkniętych podpisów?
- 23. Czy Applescript może wysyłać lub otrzymywać prośby?
- 24. Jak uzyskać dane wyjściowe polecenia zewnętrznego w Perlu?
- 25. sposób sprawdzenia, czy blok dispatch_async zakończył działanie
- 26. EXC_BAD_ACCESS podczas kopiowania lub zachowaniu Blok
- 27. Jak zatrzymać wejście w Perlu?
- 28. Czy Jtable może zapisywać dane, gdy komórka traci ostrość?
- 29. Jeśli blok a blok-obudowa blokuje
- 30. Czy zmienne Verilog mogą mieć zakres lokalny na zawsze blok?
Doskonały punkt dotyczący '$^C'. Oto link do wpisu perlvar: http://perldoc.perl.org/perlvar.html#$^C – daotoad
@daotoad twój link został zerwany, więc zredagowałem odpowiedź, by zawierała działającą. – Ether