Inhoudsopgave:
Video: DOMINION Documentary | 2018 2024
Een typfout in te voeren tijdens het schrijven van een Perl-programma is niet ongewoon. Maar wanneer u probeert een programma uit te voeren dat een slip-up voor tekstinvoer bevat, raakt Perl meestal in de war en vertelt u dat door een fout te melden. De natuurlijke reactie voor de meeste mensen, zelfs mensen met jarenlange programmeerervaring, is om bezorgd of boos te worden of beide wanneer er een foutmelding verschijnt.
Geen paniek. Haal diep adem. Neem nog een langzame, diepe ademhaling. Serieus, je kunt de wortel van het probleem niet bereiken als je helemaal gespannen en gehinderd bent. Het maakt niet uit hoeveel jaar je programmeert, je zult altijd een aantal fouten vinden in de code die je geschreven hebt.
Dus, nu dat je (hopelijk!) Een beetje rustiger bent, kun je beginnen te waarderen dat Perl nuttiger foutmeldingen heeft dan bijna elke andere programmeertaal. De berichten komen niet altijd overeen met het geld, maar ze kunnen je in de buurt brengen van de plek waar het probleem ligt met een minimale zoekopdracht van jouw kant.
Perl heeft talloze foutmeldingen, maar een paar komen zeker vaker voor dan anderen vanwege een aantal veelvoorkomende typefouten die iedereen lijkt te maken. De volgende fouten zijn het gevolg van kleine foutmeldingen bij het invoeren van tekst die u gemakkelijk kunt vermijden.
Een puntkomma vergeten
Waarschijnlijk de meest voorkomende foutmelding die u ziet bij het programmeren in Perl ziet er ongeveer zo uit:
# syntaxisfout, in de buurt van "open"
Bestand 'teller1. pl; Regel 10
# Uitvoering afgebroken vanwege compilatiefouten.
Je kunt naar Lijn 10 kijken en kijken, degene met de open verklaring, en je zult niets verkeerds zien. De truc hier is om de verklaring te onderzoeken die vóór de openstaande instructie bevat en te kijken of deze eindigt met een puntkomma. (Perl weet dat een instructie alleen eindigt als er een puntkomma wordt gevonden.) In dit geval wordt de fout veroorzaakt door een ontbrekende puntkomma aan het einde van regel 7 van het programma:
$ TheFile = "sample. txt "
Een aanhalingsteken vergeten
Het volgende soort foutmelding kan zeer frustrerend zijn als u geen snelle oplossing kent:
# Kaal woord gevonden waar operator verwacht, dichtbij
#" open (INFILE, $ TheFile) of sterf "De"
# (mogelijk een doorlopende meerregelige "reeks beginnend op
# regel 7)
Bestand 'counter1. pl; Regel 10
Deze fout is vergelijkbaar met het vergeten van een puntkomma; in plaats daarvan is het een aanhalingsteken dat per ongeluk is weggelaten:
$ TheFile = "sample. tekst;
In dit geval heeft Perl goed geraden wat er aan de hand is, wat suggereert dat een weggelopen regel met meerdere regels op regel 7 het probleem is, wat precies goed is.
Een haakje invoeren te veel of te weinig
Als u heel veel haakjes opent en sluit in een programma, kunt u er gemakkelijk per ongeluk een extra inleggen. Als dat het geval is, ziet u mogelijk een bericht van Perl met de volgende betekenis:
# syntax error, near ") eq"
File 'counter1. pl; Lijn 38
# syntaxisfout, nabij "}"
Bestand 'teller1. pl; Regel 42
Hier kan Perl niet bepalen waar de fout precies ligt, maar hij heeft het bij de eerste schatting precies goed: regel 38 bevat een extra haakje aan de rechterkant:
if (substr ($ TheLine, $ CharPos, 1)) eq "")
Het ontbreken van één haakje in een Perl-programma kan leiden tot moeilijker te vinden problemen:
# Kan constant item niet als arg arg van impliciet gebruiken ->,
# in de buurt van "1}"
Bestand "counter1. pl; Regel 39
# Scalar gevonden waar operator verwacht, nabij "$ CharPos"
Bestand 'teller1. pl; Regel 40
# (ontbrekende puntkomma op vorige regel?)
# syntaxisfout, nabij "$ CharPos"
Bestand 'teller1. pl; Lijn 40
Yarp! Dit alles werd geproduceerd omdat het laatste haakje op regel 38 ontbreekt:
if (substr ($ TheLine, $ CharPos, 1) eq ""
Hier is nog een goede les in het opsporen van typefouten: Start waar Perl zegt er is een fout gevonden.Als u de fout daar niet vindt, gaat u een of twee rijen omhoog en kijkt u of het probleem eerder is begonnen.
Nog een laatste woord van advies: vertrouw op Perl om de eenvoudige typfouten voor u te vinden (waar kan) en onthoud dat het je alle hulp geeft die het kan, wat meer is dan je voor veel programmeertalen kunt zeggen.