Lære Perl. Rask start i Perl

Jeg har hørt at Perl er et utdatert språk og ingen skriver på det lenger. Er det sånn?
Nei ikke slik. Perl brukes av systemadministratorer (eller bare avanserte brukere) for å automatisere rutinearbeid. Perl brukes til å lage nettsider. Det skaper også vanlige søknader, akkurat som i alle andre programmeringsspråk.

Når det gjelder språkets alder, ble Perl opprettet i 1986 og har aktivt utviklet og endret seg siden den gang. Perl støtter for tiden modulær og objektorientert programmering, vanlig uttrykk etc. – følger generelt med i tiden.

Annonser for ledige Perl programmerer ledige stillinger vises fra høy frekvens, mens lønnsnivået som regel er betydelig høyere enn for C- eller Java-programmerere. Men når du leser disse linjene, kunne situasjonen ha endret seg, så det er bedre å gjøre din egen forskning i denne retningen ved å besøke for eksempel rabota.ru.

Hva er bra med Perl?
Jeg vil fremheve følgende fordeler med Perl fremfor andre programmeringsspråk:

  • Programmer skrevet i Perl (som med alle andre skriptspråk) fungerer like godt under forskjellige operativsystemer.
  • Ofte kan noe som tar ti linjer med kode i et annet programmeringsspråk (for eksempel PHP) skrives i Perl på én linje.
  • Hvis du har en oppgave foran deg, ta en titt på CPAN. Mest sannsynlig har noen allerede løst det. Alt du trenger å gjøre er å laste ned modulen og lese dokumentasjonen for den.

Jeg har hørt at Perls syntaks er utrolig kompleks. Er det sånn?
Perl-syntaksen er veldig lik Java-syntaks eller PHP. Samme sykluser, samme betingede uttalelser og krøllete tannregulering. Perls rykte som et språk med kompleks syntaks er helt ufortjent for operatørene det inneholder, som, som allerede nevnt, lar deg skrive mer kort kode. La oss si at du kan erklære en rekke ord som dette:

Min @arr = ("aaa", "bbb", "ccc");

Eller mer på en enkel måte- uten komma og anførselstegn:

Min @arr = qw/aaa bbb ccc/;

Hvis du er interessert spesifikke eksempler, der koden i Perl viser seg å være kortere enn i noen PHP, vil jeg tillate meg å henvise deg til bloggen min, eller rettere sagt, til oppføringen. Vær spesielt oppmerksom på grep- og sorteringsoperatorene, tenk på hvor mye kode den samme koden vil ta i PHP.

Hvor skal jeg begynne å lære Perl?
Personlig lærte jeg ved eksempel. Generelt synes jeg denne metoden er den enkleste og mest forståelige. Du finner dem enkelt på Google eller på min allerede nevnte blogg – hvor jeg ofte legger ut manus med kommentarer.

Jeg kan imidlertid anbefale noen gode bøker er "Learning Perl" og "Perl: Going Deeper" av R. Schwartz og T. Phoenix. Disse bøkene har nylig blitt trykt på nytt, så de vil gi deg den lettest å lære, mest oppdatert informasjon om programmering i Perl. Haster Ikke Jeg anbefaler å ta noen andre bøker, siden det som står i dem ofte har mistet sin relevans for lenge siden (hvis boken for eksempel er 2006, husk at Perl aktivt utvikler seg) eller den inneholder 1000 sider om ingenting.

Hvis du har spørsmål om programmering i Perl, kan du be om råd på programmeringsfora (for eksempel vingrad.ru) eller i LJ-fellesskapet ru_perl.

Jeg vil ikke installere UNIX bare for denne Perl-en din!
Og ikke nødvendig - Perl har blitt overført til Windows. Det tilsvarende prosjektet heter ActivePerl. Bare last ned og installer ActivePerl fra http://www.activestate.com/activeperl/ og nyt. Det er ikke nødvendig å lete etter noen sprekker eller nøkkelgener - programmet er gratis.

Alt er så bra og flott. Men hva med fluen i salven?
Ja, kanskje det er en, og ikke en gang.

For det første fungerer den såkalte "vannmadrass"-loven på alle språk. Kort fortalt betyr det at språket enten kan være lett å lære, men programmene i det vil bestå av stort nummer linjer (som tilfellet er med PHP), eller vanskelig å lære, men lar deg skrive mindre kode (dette er akkurat vårt tilfelle).

For det andre er ikke Perl egnet for alle oppgaver. Hvis du må skrive et program som skal kjøre raskt ( grafikk editor, 3D-spill), vil Perl ikke passe deg. Som alle andre skriptspråk. På samme måte ville jeg ikke skrevet sjåfører i Perl.

For det tredje, selv om Perl, etter min mening, ikke er vanskelig å lære, tar selve læringen mer tid enn for andre språk. Til sammenligning mestret jeg PHP på bokstavelig talt et par netter - variabler, looper, klasser - det er ingenting å vite. Du kan begynne å skrive Perl på like lang tid, men det tok meg personlig flere måneder å forstå det godt.

Vil du ha et minus for å hate PHP?
PHP har sine fordeler, mange av dem stammer fra enkelheten i syntaksen. Enkel syntaks betyr lett å lære. Lett å lære, betyr mer fellesskap.

Ikke undervurder PHP, fordi takket være det dukket det opp så kraftige CMS-er som Drupal og Joomla. Jeg vet ikke om noen lignende prosjekter i Perl, bortsett fra WordPress-analogen - Movable Type. Sistnevnte er forresten veldig populær i utlandet.

Oppdater: Jeg skrev et kort innlegg her om det grunnleggende om programmering i Perl, kanskje det vil være nyttig for noen.

Du er i ferd med å reise inn i programmeringsverdenen Perl språk. Turen din blir desto morsommere på grunn av tilstedeværelsen stor kvantitet eksempler som vil dukke opp underveis. Begynnelsen av vår reise dekker de grunnleggende begrepene språk. Etter hvert vil du lære nok om Perl til å lage små programmer. På slutten av reisen vår vil du allerede ha den nødvendige kunnskapen for å kunne lage fullverdige applikasjoner.

Snakker du andre programmeringsspråk? Hvis ja, vil det være en glede for deg å lære Perl. Hvis ikke, så ikke skynd deg, prøv alle de foreslåtte øvelsene og eksemplene og ikke vær redd for å eksperimentere!

Opprinnelse

Perl var resultatet av en manns innsats, og etter hans egen innrømmelse, resultatet av hans latskap. Dette er et unikt språk, hvis essens ikke kan formidles enkel beskrivelse tekniske detaljer. Perl er en sinnstilstand.

En av språkets særheter er navnet. Den har flere definisjoner. Perl sto opprinnelig for Practical Extraction Report Language. Imidlertid kaller programmerere det veldig ofte Phatologically Eclectic Rubbish Lister eller til og med Praktisk talt Alt Virkelig Likable.

La oss bruke noen minutter på å forstå hva Perl er og hvilke oppgaver som ble tildelt den da den ble opprettet. Tilbake i 1986 jobbet Larry Wall med problemet med å generere rapporter fra et stort antall tekstfiler som overlappet med hverandre. Som Unix-programmerer, og fordi oppgaven innebar å manipulere innholdet i tekstfiler, prøvde han først å bruke Awk. Men det ble raskt klart at Awk ikke var egnet for jobben, og siden han ikke hadde andre kandidater til å løse problemet, var det eneste som gjensto å finne opp sitt eget verktøy som kunne brukes i fremtiden.

I stedet for å kaste bort tid, fant Larry ganske enkelt opp et nytt programmeringsspråk og skrev en tolk for det. Dette virker som et paradoks, men det er ikke helt sant - det du gjør er alltid mye arbeid, men hvis du gjør det riktig, vil dette arbeidet definitivt lønne seg.

Larry tilbød snart skapelsen sin til Usenet-nyhetsleserfellesskapet. Brukere med tilgang til Usenet ga Perls skaper effektiv tilbakemelding, og spurte hvordan de skulle gjøre dette, det og det andre. Larry hadde ikke engang tenkt å stille mange av disse problemene til sitt lille nye programmeringsspråk.

Det nye programmeringsspråket hadde vekt på systemkontroll og tekstbehandling. Etter flere revisjoner kan den allerede bruke vanlige uttrykk, signaler og nettverkskontakter. Den ble kjent som Perl og ble raskt populær blant Unix-programmerere, og snart resten av oss.

Larry vedlikeholder ikke lenger Perl alene, men beholder sin eksklusive tittel som hovedutvikler.

Perl-programmer ligner veldig på C-programmer, kanskje fordi Perl ble skrevet i C, og kanskje fordi Larry fant noen C-konstruksjoner nyttige. Men Perl er mindre pedantisk og mye mer konsis enn C.

Perl er designet for å hjelpe programmereren å gjøre det rutineoppgaver, som er for vanskelige eller dårlig bærbare for skallet, og for grove eller vanskelige å kode for C (eller et annet språk).

Når du har mestret Perl, kan du finne ut at du bruker merkbart mindre tid på å sitere forskjellige skallparametere (eller utføre C-deklarasjoner riktig) og mer tid på å lese Usenet-nyheter og gå på ski nedover fjellet. fordi Perl er et fantastisk verktøy for å hjelpe deg å bli en programmerer. "Noen av de gamle" sa: "Du bør ikke lære et programmeringsspråk som ikke radikalt endrer din forståelse av programmering." Vær trygg, når du først har lært Perl, vil du se på programmering fra et helt annet perspektiv.

De kraftige designene til dette språket lar deg lage veldig effektive løsninger og universelle verktøy. Disse verktøyene kan fortsatt brukes fordi programmer skrevet i Perl er svært bærbare og klare til bruk. Som et resultat vil du ha enda mer tid til å lese Usenet-nyheter og gå på barer med venner.

Perl er veldig flink til å håndtere oppgaver lavt nivå, spesielt etter utgivelsen av den femte versjonen av språket.

Kostnad og lisens

Perl er gratis. For å være mer presis, er Perl distribuert under GNU Public License. Den komplette kildekoden og dokumentasjonen er helt gratis å kopiere, kompilere og skrive ut. Alle programmene du skriver i Perl er dine, og du kan gjøre hva du vil med dem.

I tillegg til UNIX-datamaskiner, finnes Perl også for andre plattformer - Windows, DOS, Atari, Amiga, etc.

Har du installert Perl?

Det er veldig enkelt å finne ut om du har Perl. Bare utfør følgende kommando på kommandolinjen:

perl -v Dette er perl, versjon 5.001
Uoffisiell patchlevel 1m.
Copyright 1987-1994, Larry Wall Win32-port Copyright 1995 Microsoft Corporation. Alle rettigheter forbeholdt.
Utviklet av hip communications inNC., //info.hip.com/info/
Perl for Win32 Build 107
Bygget 16. april 1996@14:47:22
Perl kan bare kopieres under vilkårene for enten den kunstneriske lisensen eller GNU General Public License, som kan finnes i Perl 5.0-kildesettet.

Hvis du mottar en feilmelding eller har versjon 4 av Perl, vennligst kontakt din Systemadministrator eller installer Perl selv.

Ditt første Perl-program

Ditt første Perl-program illustrerer utskrift av en tekstlinje til skjermen. Først må du lage en enkel tekstfil, som vil inneholde Perl-programmet ditt. Deretter kjører du programfilen.

Opprette et program

Et Perl-program er en vanlig tekstfil som inneholder flere språkkonstruksjoner. Sistnevnte ligner vanligvis på en blanding av C, Unix shell script og på engelsk. Generelt er det akkurat slik det egentlig er.

Perl-koden kan være ganske variert. Her er noen grunnleggende regler:

Innledende mellomrom i linjen ignoreres. Du kan plassere språksetningen hvor du vil: på begynnelsen av linjen, innrykket (anbefalt), eller til og med justert til høyre (men i dette tilfellet vil det være ekstremt vanskelig å lese programteksten og forstå noe som helst);

En språkkonstruksjon må ende med semikolon med mindre det er den siste konstruksjonen i en blokk eller fil, eller er en eval-setning;

Mellomrom, tabulatorer, tomme linjer er irrelevante - ett mellomrom er like godt som hundre mellomrom. Dette betyr at du kan dele opp språkkonstruksjonen i flere linjer for klarhet. En streng er vanligvis en serie tegn omgitt av anførselstegn. Kapittel 2, "Tall og strengbokstaver," inneholder mer Detaljert beskrivelse linjer;

Alt etter "#"-tegnet ignoreres med mindre det er innenfor en linje. Bruk denne funksjonen til å gi nyttige kommentarer til koden din. Det skal bemerkes at det ikke er flere linjers kommentarer (for eksempel som i C-språket) i Perl.

I likhet med et shell-skript, består et Perl-program av alle Perl-setningene som er tilstede i en fil, sett sammen som ett stort program som skal kjøres. Det er ikke noe konsept for en hovedfunksjon, som i C, i Perl.

Noe av det spennende med Perl 6 er den utrolige lettheten det er mulig å lage nye moduler/biblioteker med og legge dem til i Perl 6 Ecosystem (Perl 6s CPAN-ekvivalent). La oss se på hvordan nye moduler lages for Perl 6.

La oss ta en titt på Sitemap::XML::Parser-modulen som et eksempel. Innholdet i det tilsvarende GitHub-depotet er som følger:

.
+-- lib
¦ L--Nettkart
¦ L-- XML
¦ L-- Parser.pm6

META.info

LES MIG
L--t
L--main.t

Hva inneholder Perl 6-modulen:

Selvfølgelig er det mulig å klare seg uten tester og enda mer uten logo.

Med koden tror jeg alt er mer eller mindre klart. La meg bare merke seg at når du deklarerer metoder og funksjoner, er det mye bedre å indikere typene argumenter. Dermed vil du yte en enorm service til de som skal bruke modulen din.

Modulgrensesnittet vil være mer forståelig og det vil være vanskeligere å gjøre feil når du bruker det.

Dokumentasjonen er skrevet på britisk språk og lagret i samme pm- eller pm6-filer som koden. Jeg tror ikke du vil ha noen problemer med Perl 6 Pod-formatet; det er smertefullt enkelt å lære ved hjelp av eksemplene. Når du skriver dokumentasjon, er det vanligvis nok å gi en kort beskrivelse av modulen, et eksempel på bruken, og i en eller to setninger skissere hver funksjon (eller metode) som er tilgjengelig for brukeren.

Tester er plassert i ./t-katalogen i filer med filtypen t. Dette er i hovedsak vanlige Perl 6-skript. Vær så god klart eksempel en enkel automatisert test som faktisk ikke inspiserer noe:

Bruk v6;
bruk lib "lib";
bruk Test;


ok(1);

For å kjøre tester, bruk kommandoen:

Bevis -e perl6 ./t

Hovedmodulene som vil være nyttige for deg når du skal skrive tester er Test og Test::Mock. Som du kanskje gjetter, er den første faktisk ment for å skrive tester, og den andre er for å lage falske objekter. Eksempler på bruk av begge modulene finner du her.

Se også et utvalg lenker på slutten av notatet.

Merk: Bare i tilfelle vil jeg gjøre deg oppmerksom på det faktum at tester ikke bør skrives under forutsetning av at brukeren har Memcached installert på localhost eller noe sånt. Bruk falske objekter etter behov, og husk at du skriver enhetstester (og sporadiske integreringstester) som ikke bør avhenge av denne typen ting. Som praksis viser, er dette ikke åpenbart for noen programmerere.

META.info-filen inneholder navn, versjon og kort beskrivelse av modulen, samt en liste over avhengigheter, type og adresse til depotet. Filformatet er vanlig JSON:

{
"name" : "Nettkart::XML::Parser",
"versjon" : "*",
"description" : "En Perl 6-modul for å analysere sitemap.xml-filer",

"avhenger" : [
"LWP::Enkelt",
"XML::Parser::Tiny",

"DateTime::Format::W3CDTF"
],
"source-type" : "git",
"source-url" : "git://github.com/afiskon/p6-sitemap-xml-parser.git"
}

README-filen er strengt tatt ikke nødvendig. Men de som ser inn i depotet med modulkoden din vil sette pris på om du lager denne filen. Den enkleste måten å gjøre det på er fra Pod-dokumentasjonen for modulen:

Perl6 --doc ./lib/Sitemap/XML/Parser.pm6 > ./README

Ved å bruke denne tilnærmingen trenger du ikke å bekymre deg for hvordan du vedlikeholder README-fil i en plagsom tilstand.

Når det gjelder modullogoen, synes jeg personlig at denne ideen er fullstendig tull. Men hvis du virkelig ønsker at modulen din skal ha en logo, kan du for eksempel se hvordan det gjøres i JSON::Tiny-modulen.

Så du har gjort noen nødvendig modul, skrev dokumentasjon for det og dekket det skikkelig med tester. Hva kreves for at andre programmerere kan installere det ved hjelp av panda?

For å gjøre dette, deler vi depotet https://github.com/perl6/ecosystem/, legger til en lenke til META.info-filen i vårt eget depot og en pull request-hjelm på slutten av META.list-filen. GitHub lar deg gjøre alt dette med et par klikk direkte fra nettgrensesnittet.

Etter min erfaring aksepteres konfigurasjoner ganske raskt, vanligvis innen en time eller så. Etter litt mer tid vil modulen din vises i filen http://feather.perl6.nl:3000/projects.json. Denne spesielle filen brukes av panda for å få en komplett liste over alle tilgjengelige moduler for Perl 6. La oss prøve å installere modulen:

Panda-oppdatering
panda installer Sitemap::XML::Parser

Vi sjekker at testene består, dokumentasjonen ses gjennom p6doc osv. Etter litt mer tid vil en lenke til modulen din dukke opp på modules.perl6.org. Hvis du har skrevet noe nyttig, trenger ikke nye billetter i feilsporingen, gafler og pull-forespørsler å vente lenge.

Siden alle Perl 6-moduler, og faktisk alt relatert til Perl 6, er lagret i git-repositories på GitHub (selv om du, slik jeg forstår det, ikke bare kan bruke GitHub og ikke bare Git), kan du enkelt forbedre minst en av dem - for å rette en feil, legge til dokumentasjon osv. Eller for eksempel bare bruk dem som treningseksempler.

Dukket opp i 1987.

Dette programmeringsspråket er rikt på muligheter for å jobbe med tekst, som bestemmer dets hovedområde - spesielt tekstmanipulering.

Denne artikkelen vil lede deg gjennom trinnene for å installere Perl runtime, velge utviklingsverktøy og lage ditt første program. På slutten av denne veiledningen finner du en liste over ressurser som hjelper deg raskt å komme i gang. Grunnleggende om Perl, samt studere språket mer i dybden.

Perl er det eneste språket der programmer ser like ut før og etter RSA-kryptering.

På tidspunktet for skriving av dette materialet gjeldende versjon tolk er 5.22.0. Perl 6 skal utgis i 2015, men er ikke godt dokumentert ennå.

Språk Perl programmering Det anbefales sterkt ikke å bruke det som et språk for å bli kjent med programmering. Hvis du er en absolutt nybegynner, er det bedre å starte med noe mindre ødeleggende for din skjøre bevissthet. Seriøst, her er hva Jon Ribbens hadde å si om dette språket:

PHP er et lite onde skapt av inkompetente nybegynnere, mens Perl er en stor og lumsk ondskap skapt av dyktige, men skrudde fagfolk.

Du bør forresten ikke begynne med PHP heller. La oss nå gå i gang.

Runtime miljø

dette øyeblikket Perl støttes offisielt på tre ledende plattformer: Mac OS X, Unix og Windows. På de to første av dem er Perl runtime-miljøet forhåndsinstallert, og versjonen kan bli funnet ved å bruke perl -v-kommandoen (den nyeste versjonen kan lastes ned), og for operativsystemer Windows-familien Perl-tolken er tilgjengelig for nedlasting på denne siden. Det anbefales å velge ActivePerl (distribusjon fra ActiveState) som den vanligste.

Integrert utviklingsmiljø (IDE)

Perl er dessverre ikke veldig populær blant utviklere av utviklingsmiljøer, så du har bare et lite antall spesialiserte verktøy å velge mellom.

Padre, Perl IDE

Et multi-plattform, lett utviklingsmiljø designet spesielt for Perl og brukervennlig for nybegynnere. I tillegg til tradisjonell syntaksutheving og autofullføring, har den også innebygde refactoring-verktøy. Forresten, selve Padre er skrevet i Perl 5.

Tekstredaktører

Som med et hvilket som helst programmeringsspråk, har du selvfølgelig et stort utvalg av tekstredigerere for flere plattformer å velge mellom, fra forhåndsinstallerte notatblokker til mer praktiske redigeringsverktøy kildekode med syntaksutheving, autofullføring osv. Vær spesielt oppmerksom på:

  • KomodoEdit - en nedstrippet versjon av det kommersielle utviklingsmiljøet Komodo IDE, utviklet av ActiveState (det samme som støtter ActivePerl-distribusjonen), har funksjoner som autofullføring, syntaksutheving, flere markører og dokumentasjonstips;
  • Vim- tekstredigerer, hvis grensesnitt kan være uvanlig for en Windows-bruker; støtter syntaksutheving;
  • Sublime Text er et av de beste redigeringsverktøyene for kildekode med syntaksutheving, autofullføring, etc., hvis funksjonalitet utvides av mange eksisterende plugins;
  • Notepad++ er et lett tekstredigeringsprogram som har den mest korrekte syntaksuthevingen etter KomodoEdit; Funksjonaliteten kan utvides med plugins, men det er ganske mange av dem spesielt for Perl.

CodeGround

Også, hvis du bare vil prøve Perl-programmering og ikke vil installere flere programvare til datamaskinen din, kan du bruke CodeGround-tjenesten, som gir tilgang til online utviklingsmiljøer med grunnleggende funksjonalitet for de fleste programmeringsspråk, inkludert Perl.

Den første "Hei, verden!" i Perl

Tradisjonelt foreslår vi at du begynner å bli kjent med et nytt språk med et velkjent program:

Skriv ut "Hei verden\n";

Lagre denne linjen i hello.pl-filen og kjør programmet du nettopp opprettet med kommandoen:

Perl hello.pl

Men sørg først for det kjørbare filer Perl er blant dine Miljøvariabler (Miljøvariabler), og også at du ringer perl fra mappen med kildefil hello.pl . Hvis det lykkes, vil du se det forventede "Hei, verden!"

Gratulerer, du har begynt å skrive Perl!

Og så på vei...

En utmerket engelskspråklig guide til programmeringsspråket Perl for kjapp start du finner den på tutorialspoint.com. I tillegg er det en offisiell treningsressurs -

Hvis programmet fungerer som det skal når det kalles opp fra kommandolinje, må du installere den på serverdatamaskinen. Akseptable plasseringer avhenger av serveren, selv om en katalog ofte brukes for CGI-skript

/usr/etc/httpd/cgi-bin/ og dens underkataloger. Diskuter dette problemet med webansvarlig eller systemadministrator.

Når programmet er installert i CGI-katalogen, kan du kjøre det ved å peke nettleseren til banenavnet som en del av

URL. For eksempel hvis programmet ditt kalles hei, URL vil se slik ut:

http://vww.SOMEWHERE.org/cgi-bin/howdy.

Servere lar deg vanligvis bruke aliaser i stedet for generiske banenavn. Server med adresse

www.SOMEWHERE.org, kan enkelt oversette cgi-bin/hei, ligger i dette URL, noe sånt som usr/etc/httpd/ cgi-bin/hei.Din systemadministrator eller webmaster kan fortelle deg hvilket alias du skal bruke når du får tilgang til programmet.Denne overskriften kreves for protokollen HTTP, som vi nevnte ovenfor.

Sender parametere via

CGI

For å sende parametere til CGI-programmer (mer presist, til de fleste CGI-programmer), trengs ingen skjemaer. For å bekrefte dette, erstatt

URL til http://www.SOMEWHERE.org/cgi-bin/ice_creain?flavor=mint.

Når du "målretter" nettleseren din mot dette

URL, nettleseren ber ikke bare webserveren om å ringe programmet iskrem, men sender også strengen inn i den smak=mynte. Nå er det opp til programmet - lese gitt argumentstreng og ta den fra hverandre. Denne oppgaven er ikke så enkel som den ser ut til. Mange programmer prøver å løse det og analysere spørringen på egen hånd, men de fleste "hjemmelagde" algoritmer mislykkes fra tid til annen. Med tanke på hvor vanskelig det er å finne riktig løsning en slik oppgave for alle mulige tilfeller, bør du sannsynligvis ikke skrive koden selv, spesielt hvis det er utmerkede ferdiglagde moduler som gjør dette vanskelig parsing for deg.

Til tjeneste

- CGI.pm-modul, som alltid analyserer den innkommende CGI-forespørselen riktig. For å sette inn denne modulen i programmet, bare skriv

et sted i begynnelsen av programmet*.

Operatør

bruk ligner på #-operatøren inkludere språk Med det faktum at det under kompileringsprosessen trekker ut kode fra en annen fil. Men den tillater også valgfrie argumenter som indikerer hvilke funksjoner og variabler fra denne modulen du vil ha tilgang til. Plasser dem i listen etter modulnavnet i setningen bruk,- og du kan kontakte spesifiserte funksjoner og variabler som om de var dine egne.

I i dette tilfellet alt vi trenger å bruke fra modulen

CGI.pm er param()-funksjonen**.

Hvis ingen argumenter er spesifisert, funksjonen

param() returnerer en liste over alle feltene som var til stede i HTML-skjemaet som det gitte CGI-skriptet svarer på. (I det gjeldende eksemplet dette feltet smak og i det generelle tilfellet - en liste over alle navn som finnes i navn=verdi-strengene i skjemaet som er sendt inn.) Hvis et argument som indikerer et felt er gitt, param() returnerer verdien (eller verdiene) knyttet til dette feltet. Derfor, param("flavor") returnerer "mint", fordi til slutt Vi sendte nettadressen ?flavor=mint. Alle Perl-modulnavn har utvidelsen rt. Dessuten operatøren bruk innebærer denne utvidelsen. Om hvordan du lager din egen egne moduler, kan du finne ut i kapittelet 5 bøker Programmering Perl eller på man-siden perlmod(l). Noen moduler eksporterer automatisk alle funksjonene sine, men siden CGI.pm - det er faktisk en objektmodul forkledd som en vanlig, vi må be om funksjonene eksplisitt.

Til tross for at i vår liste for operatøren

bruk det er bare ett element, vi vil bruke notasjonen qw(). Dette vil gjøre det lettere for oss å avsløre denne listen senere.

#!/usr/local/bin/perlS -w

# program for å svare på et skjema om din favoritt type iskrem (versjon

1) bruk CGI qw(param);

skriv ut "END_of_Start;

Innholdstype: tekst/html

Hei Verden

Hilsen, Terrans!END_of_Start

skrive ut "

Favorittsmaken din er $favoritt. print "All_Done;

Ferdig

Hvordan redusere mengden tekst du skriver

Du må fortsatt skrive inn mye, men

CGI.pm det er mange praktiske funksjoner, som forenkler settet. Hver av disse funksjonene returnerer en strengverdi som du vil sende ut. For eksempel, Overskrift() returnerer en strengverdi som inneholder strengen Innholdstype etterfulgt av tom linje, start_html( linje) returnerer den angitte strengen som en HTML-tittel ( dokumentets navn), hei (streng) returnerer den angitte strengen som HTML-overskrift på første nivå, og s (string) returnerer den angitte strengen som et nytt HTML-avsnitt.

Vi kan liste alle disse funksjonene i en liste som følger med setningen

bruk men en slik liste ville vokse til enestående proporsjoner. I CGI.pm, som i mange andre moduler er det såkalte importdirektiver - etiketter som indikerer grupper av importerte funksjoner. Du trenger bare å sette de ønskede direktivene (som hver begynner med et kolon) i begynnelsen av importlisten. I modulen CGI.pm Det er følgende direktiver:

Importer alle argumenthåndteringsmetoder, f.eks.

param().

Importer alle metoder for å lage utfyllbare skjemaer, for eksempel

tekstfelt().

Importer alle metoder som genererer standardelementer

HTML 2.0.

Importer alle metoder som genererer elementer foreslått i

HTML 3.0 (som f.eks , Og ).

Importer alle metoder som genererer utvidelser

HTML spesifikt for Netscape.

Importer alle genererte forkortelser

HTML (dvs. "html2" + "html3" + "netscape").

Importer "standard" funksjoner:

"html2", "form" og "cgi".

Importer alle eksisterende metoder. Full liste gitt i modulen

CGI.pm, hvor variabelen er definert%tags.

Vi vil kun bruke direktivet

: standard. (detaljert informasjon om import av funksjoner og variabler fra moduler er gitt i kapittelet 7 bøker Programmering Perl og også på man-siden Eksportør 3).)

Slik ser programmet vårt ut med alle forkortelsene som brukes i

CGI.pm:

#!/usr/local/bin/perlS -w

# cgi-bin/ice_cream #

program for å svare på et skjema om en kjær iskremvariant (versjon2) bruk CGI qw(:standard);

print header() ;

print start_html("Hei verden"), hei("Hei verden");

min $favoritt = param("smak");

print p("Favorittsmaken din er $favoritt.");

print end_html();

Ser du hvor mye enklere det er? Du trenger ikke å bekymre deg for å dekode skjemadata, overskrifter og HTML-tekst hvis du ikke vil.

Genererer skjemaet

Hvis du er lei av å legge inn parameterne til programmet ditt i nettleseren

- lage et utfyllbart skjema. De fleste brukere er vant til slike skjemaer. Skjemakomponenter som godtar brukerinndata kalles noen ganger widgets; det antas at dette begrepet er mye mer praktisk enn "enheter grafisk input Slike skjemakomponenter inkluderer enkelt- og flerlinjede tekstfelt, popup-menyer, rullbare lister, forskjellige typer knapper og avmerkingsbokser.

Lag følgende HTML-side som inneholder et skjema med én tekstbokskomponent og en send-knapp. Når brukeren klikker på send-knappen*, kalles skriptet

iskrem, spesifisert etter attributt HANDLING.