Perl

Frå Wikipedia – det frie oppslagsverket
Hopp til navigering Hopp til søk

Perl, Practical Extraction and Report Language, er eit programmeringsspråk som vart lansert av Larry Wall 18. desember 1987. Språket låner mykje av funksjonaliteten frå for eksempel C, sed, awk, sh og (i mindre grad) frå mange andre programmeringsspråk.

Filosofi[endre | endre wikiteksten]

Perl vart laga for å vera eit praktisk språk for å hente ut informasjon frå tekstfiler, og for å nyttegjere seg av denne informasjonen. Eit av mottoa er «There's more than one way to do it» (TMTOWTDI – uttalest «Tim Toady»), som direkte oversett til norsk tyder «det er meir enn éin måte å gjera det på». Eit av måla med språket var å gjera enkle oppgåver enkle å løyse, og vanskelege oppgåver moglege å løysa.

Perl har direkte støtte for regulære uttrykk i syntaksen, og språket er ofte sett på som det typiske skriptspråket, og har vorte kalla «limet som held webben saman» på grunn av populariteten språket har blant «CGI-språk».

Noverande versjon[endre | endre wikiteksten]

Den noverande versjonen, 5.8.6, som vart lansert 27. november 2004, har mellom anna støtte for Unicode. Neste versjon, Perl 6, er under utvikling, og han vil ta i bruk Parrot, ei virtuell maskin som blir utvikla med tanke på å støtte fleire programmeringsspråk.

Innebygde datatypar[endre | endre wikiteksten]

Perl har tre innebygde datatypar:

  • Skalarer eller Integers som dei vert kalla på engelsk kan halde ein enkelt verdi, f.eks. ein tekststreng, eit nummer eller ein referanse.
  • Lister eller arrays kan halde fleire skalarar basert på ein indeks (som startar ved posisjon 0).
  • Assosiative lister, eller hashar, er uordna samlingar sett saman av skalarar som er indeksert på basis av den assosierte nøkkelen.

Skalarer, lister og hasher kan tilordnes namngjevne variablar. Det første teiknet i variabelnamnet oppgjer kva datatype det er snakk om. Resten identifiserer verdien som variabelen har.

Skalarar startar alltid med «$», sjølv om den refererande variabelen høyrer til ei liste eller ein hash:

$maanader[11]         # det 12. elementet i lista @maaneder
$adresse{'Per'}       # elementet med nøkkelen 'Per' i hashen %adresse

Lister vert namngjevne med «@» som første teikn, som fortell at meir enn éin verdi vil verte returnert:

@maanader             # ( $maanader[0], $maanader[1], ..., $maanader[n] )
@maanader[2,3,4]      # same som ( $maanader[2], $maanader[3], $maanader[4] )
@adresse{'Per','Ola'} # same som ( $adresse{'Per'}, $adresse{'Ola'} )

Assosiative lister, hashar, startar med «%» (som i %adresse ovanfor).

Eksempel[endre | endre wikiteksten]

Hallo Wikipedia![endre | endre wikiteksten]

#!/usr/bin/perl -w

print "Hallo Wikipedia!\n";

Lykkjer[endre | endre wikiteksten]

while ( uttrykk ) {
    ...
}
do {
    ...
} while ( uttrykk );
do {
    ...
} until ( uttrykk );
for ( initialisering ; termineringsbetingelse ; økningsgrad ) {
    ...
}
foreach ( liste ) {
    ...
}
for ( liste ) {
    ...
}

Val[endre | endre wikiteksten]

if ( uttrykk ) {
    ...
}
unless ( uttrykk ) {
    ...
}
if ( uttrykk ) {
    ...
}
else {
    ...
}
if ( uttrykk ) {
    ...
}
elsif ( uttrykk ) {
    ...
}
else {
    ...
}

Subrutiner[endre | endre wikiteksten]

Subrutiner vert spesifiserte med nøkkelordet sub. Variablar til subrutina vert representerte som element i den lokale (for subrutina) lista @_. Kallar ein ei subrutine med tre argument, vert desse representerte som @_[0], @_[1] og @_[2] i subrutina. Merk at desse elementa vert referert til som skalarane $_[0], $_[1] og $_[2]. Funksjonen shift kan også nyttast for å få tak i kvar av verdiane.

Endrest nokon av elementa i @_ i subrutinene, reflekterest også denne endringen i programmet som kalla subrutina.

Subrutiner returner vanlegvis resultatet av det siste uttrykket, men ein eksplisitt return-verdi kan verte oppgjeven og foreslegen for å gjera det heilt klart kva programmeraren faktisk ynskjer å returnere.

Eksempel:

sub kube {
    my $x = shift;
    return $x ** 3;
}

$z = -4;
$y = kube($z);
print "$y\n";

Namngjevne argument kan simulerest ved å gi subrutina ein hash som innargument:

sub hallo {
    my %person = @_;
    return "Hallo, $person{fornamn} $person{etternamn}!\n";
}

print hallo (
    fornamn   => 'Ola',
    etternamn => 'Nordmann',
);

Perl og databasar[endre | endre wikiteksten]

Forskjellige DBI/DBD-modular kan nyttast for å få tilgang til dei fleste ANSI SQL-databasar, som f.eks. MySQL, PostgreSQL og Oracle.

Bakgrunnsstoff[endre | endre wikiteksten]


Programmeringsspråk

ABC | Ada | AFL | Agora | ALGOL | APL | Assembler | awk | B | BASIC | BETA | BLISS | C | C++ | C# | Caml | Cobol | Concurrent C | CSP | D | Delphi | Erlang | Forth | Fortran | Haskell | HyperTalk | Icon| INTERCAL | Java | Lisp | Miranda | ML | Modula | NIAL | Objektorientert C | occam | OCaml | O'Haskell | Pascal | Perl | PHP | Pike | PL/I | Plankalkül | Portal | Prolog | Python | R | Ruby | Scheme | Simula | Sina | Sisa | Smalltalk | SML | SNOBOL | Visual Basic