Ich bin immer noch neu in Perl. Seit BEGIN
Blöcke während der Kompilierung ausgeführt werden, kann kein Virus verbreitet werden oder Datenverlust durch einfaches Kompilieren auftreten? Tut Perl irgendetwas, um es zu stoppen? Wenn ja, bedeutet das, dass der Code in BEGIN
Blöcke außerhalb davon anders handeln kann?Kann ein Perl BEGIN-Block einen Virus verbreiten oder Daten verlieren?
Antwort
Ja zu all diesen Fragen. Die Eclipse-IDE war dafür anfällig. Es discussed in more detail here.
Wie bei jeder Software sollten Sie das Herunterladen und Ausführen von Daten von einer Quelle, der Sie nicht vertrauen, vermeiden. CPAN ist im Allgemeinen vertrauenswürdig; Obwohl mir nicht bewusst ist, dass irgendjemand absichtlich falschen Code für CPAN veröffentlicht, ist es möglich, dass es passiert ist.
können Sie vermeiden, während der Kompilierung überprüft mit dem $^C flag, z.B .:
BEGIN { load_data_from_db() unless $^C; }
Beachten Sie, dass manchmal ist ein Feature Ausführen von Code. BEGIN-Blöcke innerhalb von mod_perl-Modulen werden nur einmal ausgeführt, wenn sie zum ersten Mal geladen werden. Sie haben also eine einfache Syntax, um die Initialisierung auf Seitenebene im selben Skript durchzuführen und sie in die Nähe des von Ihnen unterstützten Codes zu setzen.
Gelegentlich ist es ähnlich nützlich, um komplizierten Initialisierungscode zu schreiben, den Sie nicht am Anfang eines Skripts platzieren möchten.
Aber meistens ist es nur da für thematische Kompatibilität mit awk.
Es ist für viel mehr als nur awk. BEGIN-Blöcke sind sehr nützlich für die Sequenzierung von Dingen. –
Ist das nicht genau das, was ich gesagt habe? Es gab ziemlich viel Text vor dem Satz, den du gewählt hast. –
@Andy - du hast "meistens" gesagt. In meiner langjährigen Perl-Software-Entwicklung habe ich BEGIN-Blöcke aus einer Reihe von Gründen bei miriad-Anlässen benutzt (und gesehen), und nicht EINMAL habe ich gesehen, dass es "thematische Kompatibilität mit awk" verwendet hat. – DVK
chromatisch erklärt how a Perl program works.
- 1. Versuchen, einen Virus zu entschlüsseln
- 2. PFUser Daten verlieren
- 3. Javascript "Virus"
- 4. Enthält E-Mails mit UNKNOWN_PARAMETER_VALUE einen Virus? Oder ist es ein MIME-Problem?
- 5. Ist dieser Magento-Code ein Virus?
- 6. Vorbei an R einen Spaltennamen tidyr zu verbreiten
- 7. Verlieren von Daten zwischen xibs
- 8. Aufeinanderfolgende Aufrufe von recvfrom() verlieren Daten?
- 9. .NET Virus Scanning API
- 10. C# -Anwendung als Virus erkannt
- 11. verlieren dynamischen Daten auf Postback-Bindung
- 12. Vektoren von std :: shared_ptr Daten verlieren
- 13. Wie kann ich Daten in Perl validieren?
- 14. Wie kann ich Daten in Perl sortieren?
- 15. Verlieren jQuery Element Daten auf "move"
- 16. Verlieren von Daten beim Schreiben mit BufferedWriter
- 17. Kann ich einen Code in Perl definieren?
- 18. asp: Tabelle Daten zu verlieren, auf Postbacks
- 19. Django REST Framework - serializer.is_valid() Daten verlieren
- 20. Kann dieser Code einige Übereinstimmungen verlieren?
- 21. Verlieren von Daten beim Weiterleiten von Ellipsenargumenten
- 22. Wie ein Perl-Hash
- 23. Java - ein Textfeld nicht den Fokus verlieren
- 24. Ninject 3 - Überschreibt BeginBlock() InRequestScope in asp.net WebAPI?
- 25. Wie kann ich herausfinden, welche App auf meinem Android einen Virus hat?
- 26. Ein Warteschlangensystem für Perl
- 27. Wie kann ich POST- und GET-Daten über die Befehlszeile an ein Perl-CGI-Skript senden?
- 28. Tidyr wie in Zählung des Auftretens zu verbreiten
- 29. Wie kann ich feststellen, ob ein Perl-Datei-Handle ein Lese- oder Schreib-Handle ist?
- 30. Wie kann ich Daten von Perl an Java übergeben?
Hervorragender Punkt über '$^C'. Hier ist ein Link zu dem Perlvar-Eintrag dafür: http://perldoc.perl.org/perlvar.html#$^ C – daotoad
@daotoad Dein Link war defekt, also habe ich die Antwort bearbeitet, um eine funktionierende zu enthalten. – Ether