Perl
Fra Wikipedia, den frie encyklopedi
Perl, Practical Extraction and Report Language, er et programmeringsspråk som ble sluppet av Larry Wall 18. desember 1987. Språket «låner» mye av sin funksjonalitet fra for eksempel C, Unix-skripting (sh), awk, sed, Lisp og (i mindre grad) mange andre programmeringsspråk.
Innhold |
[rediger] Filosofi
Perl ble laget for å være et praktisk språk for å hente ut informasjon fra tekstfiler, for så å nyttegjøre seg av denne informasjonen. Et av mottoene er «There's more than one way to do it» (TMTOWTDI – uttales «Tim Toady»), som direkte oversatt til norsk betyr «det er mer enn én måte å gjøre det på». Et av målene med språket var å gjøre «enkle oppgaver enkle å løse, og vanskelige oppgaver mulige å løse».
Perl har direkte støtte for regulære uttrykk i sin syntaks, og språket er ofte betegnet som det typiske skriptspråket, og har blitt kalt «limet som holder webben sammen» på grunn av språkets popularitet som «CGI-språk».
[rediger] Nåværende versjon
Den nåværende versjonen, 5.8.8, ble sluppet 2. februar 2006. Neste versjon, Perl 6, er under utvikling, og den vil ta i bruk Parrot, en virtuell maskin som blir utviklet med tanke på å støtte flere programmeringsspråk.
[rediger] Innebygde datatyper
Perl har tre innebygde datatyper:
- Skalarer (en. scalars) kan holde en enkelt verdi, f.eks. en tekststreng, et nummer eller en referanse.
- Lister (en. arrays) kan holde flere skalarer basert på en indeks (som starter ved posisjon 0).
- Assosiative lister (en. hashes), er uordnede samlinger bestående av skalarer som er indeksert på basis av den assosierte nøkkelen.
Skalarer, lister og hasher kan tilordnes navngitte variabler. Det første tegnet i variabelnavnet angir hvilken datatype det er snakk om. Resten identifiserer verdien som variabelen har.
Skalarer begynner alltid med «$», selv om den refererende variabelen tilhører en liste eller en hash:
$maaneder[11] # det 12. elementet i listen @maaneder $adresse{'Per'} # elementet med nøkkelen 'Per' i hashen %adresse
Lister navngis med «@» som første tegn, som forteller at mer enn én verdi vil bli returnert:
@maaneder # ( $maaneder[0], $maaneder[1], ..., $maaneder[n] ) @maaneder[2,3,4] # samme som ( $maaneder[2], $maaneder[3], $maaneder[4] ) @adresse{'Per','Ola'} # samme som ( $adresse{'Per'}, $adresse{'Ola'} )
Assosiative lister, hasher, begynner med «%» (som i %adresse ovenfor), men ved adressering benyttes «$»-tegnet;
%adresser = ( 'Per' => 'Storgata 99', 'Ola' => 'Svingen 18' ); print 'Per bor i ' . $adresser{'Per'} . "\n";
[rediger] Eksempler
[rediger] Hello, world!
#!/usr/bin/perl -w print "Hello, world!\n";
[rediger] Løkker
while ( uttrykk ) { ... }
do { ... } while ( uttrykk );
do { ... } until ( uttrykk );
for ( initialisering ; termineringsbetingelse ; økningsgrad ) { ... }
foreach ( liste ) { ... }
for ( liste ) { ... }
[rediger] If-then
if ( uttrykk ) { ... }
unless ( uttrykk ) { ... }
if ( uttrykk ) { ... } else { ... }
if ( uttrykk ) { ... } elsif ( uttrykk ) { ... } else { ... }
[rediger] Subrutiner
Subrutiner spesifiseres med nøkkelordet sub. Variabler til subrutinen blir representert som elementer i den lokale (for subrutinen) listen @_. Kaller man en subrutine med tree argumenter, blir disse representert som @_[0], @_[1] og @_[2] i subrutinen. Merk at disse elementene blir referert til som skalarene $_[0], $_[1] og $_[2]. Funksjonen shift kan også benyttes for å få tak i hver av verdiene.
Endres noen av elementene i @_ i subrutinene, reflekteres også denne endringen i programmet som kalte subrutinen.
Subrutiner returner vanligvis resultatet av det siste uttrykket, men en eksplisitt return-verdi kan angis og anbefales for å gjøre det helt klart hva programmereren faktisk ønsker å returnere.
Eksempel:
sub kube { my $x = shift; return $x ** 3; } $z = -4; $y = kube($z); print "$y\n";
Navngitte argumenter kan simuleres ved å gi subrutinen en hash som inn-argument:
sub hallo { my %person = @_; return "Hallo, $person{fornavn} $person{etternavn}!\n"; } print hallo ( fornavn => 'Ola', etternavn => 'Nordmann', );
[rediger] Perl og databaser
DBI-grensesnittet er den løsningen som oftes blir brukt for å kommunisere med de fleste ANSI SQL-databasene, som f.eks. MySQL, PostgreSQL og Oracle.
[rediger] Eksterne lenker
Ada | Algol60 | Algol-68 | APL | Assembler | awk | BASIC | BETA | BLISS | C | C++ | C# | Caml | Cobol | Concurrent C | Delphi | Erlang | Forth | Fortran | Haskell | HyperTalk | INTERCAL | Java | Lisp | ML | Modula | Objective-C | OCaml | O'Haskell | Pascal | Perl | PHP | Pike | PL/I | Plankalkül | Prolog | Python | Ruby | Scheme | Simula | SML | Visual Basic