Innholdsfortegnelse:
Video: Brian McGinty Karatbars Gold Review Brian McGinty June 2017 Brian McGinty 2024
Det er ikke uvanlig å skrive inn en skrivefeil eller to i løpet av skrivingen. Men når du forsøker å kjøre et program som inneholder en tekstoppføring, blir Perl vanligvis forvirret og forteller deg det ved å rapportere en feil. Den naturlige reaksjonen for de fleste, selv de med år med programmeringserfaring, er å bli bekymret eller sint eller begge deler når en feilmelding kommer opp.
Ikke panikk. Pust dypt inn. Ta en annen sakte, dyp pust. Seriøst kan du ikke komme til roten til problemet hvis du er all spent og plaget. Uansett hvor mange år du programmerer, kommer du alltid til å finne noen feil i koden du er skrevet.
Så nå, da du (forhåpentligvis!) Er litt roligere, kan du begynne å sette pris på det faktum at Perl har mer nyttige feilmeldinger enn nesten alle andre programmeringsspråk. Meldingene er ikke alltid rett på pengene, men de kan få deg ganske nært til stedet der problemet ligger ved minimal søking fra din side.
Perl har utallige feilmeldinger, men noen avgrenser definitivt mer enn andre på grunn av noen vanlige skrivefeil som alle synes å gjøre. Følgende feil kommer fra mindre tekstinnlegg som du enkelt kan unngå.
Glemmer en semikolon
Sannsynligvis den vanligste feilmeldingen du ser når programmeringen i Perl ser noe slik ut:
# syntaksfeil, nær "åpen"
File 'counter1. pl '; Linje 10
# Utførelsen ble avbrutt på grunn av kompileringsfeil.
Du kan se og se på Linje 10, den med den åpne setningen, og du vil ikke se noe galt med det. Trikset her er å undersøke uttalelsen som kommer før den åpne setningen og se om den slutter med et semikolon. (Perl vet at en uttalelse bare slutter når den møter et semikolon.) I dette tilfellet er feilen forårsaket av et savnet semikolon på slutten av linje 7 i programmet:
$ TheFile = "sample. txt "
Glemmer et sitatmerke
Følgende slags feilmelding kan være ekstremt frustrerende hvis du ikke vet om en rask løsning:
# Bare ord funnet hvor operatør forventes, nær
#" Åpne (INFILE, $ TheFile) eller dø "The"
# (kan være en runde flerlinje "streng som starter på
# linje 7)
File 'counter1. pl '; Linje 10
Denne feilen ligner på å glemme et semikolon; I stedet er det et sitatmerke som utilsiktet utelates:
$ TheFile = "sample. tekst;
I dette tilfellet har Perl gjort en god jobb med å gjette hva som er galt, noe som tyder på at en runaway multi-line "streng på linje 7 er problemet, som nettopp er riktig.
Angi en parentes for mange eller for få
Når du har masse åpne og lukkede parenteser i et program, er det enkelt å slippe en ekstra ved et uhell. Hvis det er tilfelle, ser du kanskje en melding fra Perl som leser noe slikt:
# syntaksfeil, nær ") eq"
File 'counter1. pl '; Linje 38
# syntaksfeil, nær "}"
Fil 'counter1. pl '; Linje 42
Her kan Perl ikke bestemme hvor feilen er nøyaktig, men den har faktisk det rett ved første gjetning: Linje 38 inneholder en ekstra høyre parentes:
hvis (substr ($ TheLine, $ CharPos, 1)) eq "")
Å ha en parentes for få i et Perl-program kan føre til vanskeligere å finne problemer:
# Kan ikke bruke konstant element som venstre arg av implisitt ->,
# nær "1}"
File 'counter1. pl '; Linje 39
# Skalar funnet hvor operatør forventet, i nærheten av "$ CharPos"
File 'counter1. pl '; Linje 40
# (Mangler semikolon på forrige linje?)
# syntaksfeil, nær "$ CharPos"
File 'counter1. pl '; Linje 40
Yarp! Alt dette ble produsert fordi den siste parentesen på Linje 38 mangler:
hvis (substr ($ TheLine, $ CharPos, 1) eq ""
Her er en annen god leksjon i jakt ned skrivefeil: Start hvor Perl sier Det fant en feil. Hvis du ikke finner feilen der, kan du gå opp på en linje eller to og se om problemet startet tidligere.
Et siste ord av råd: Stol Perl for å finne de enkle typene for deg (hvor det kan), og husk at det gir deg all hjelp den kan, noe som er mer enn du kan si for mange programmeringsspråk.