|
Perl, uoffisielt også kalt 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.
FilosofiPerl 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». Nåværende versjonDen nåværende versjonen, 5.10.0, ble sluppet 18. desember 2007. 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. Innebygde datatyperPerl har en rekke innebygde datatyper, hvorav de vanligste:
Verdier av disse typene (og flere) kan tilordnes navngitte variabler. Et tegn, «sigil», foran variabelnavnet angir vanligvis hvilken datatype vi får fra en variabel, uavhengig av hva slag datatype(r) som er tilordnet variablen. «$» foran variabelnavnet gir en skalar, om variabelen holder en skalar, en tabell (med indeks) eller en hash (med indeks):
$foo # en enkel skalar $foo
$maaneder[11] # det 12. elementet i tabellen @maaneder
$adresse{'Per'} # elementet med nøkkelen 'Per' i hashen %adresse
«@» foran variabelnavnet gir en liste, om variabelen holder en tabell (med eller uten indeks) eller en hash (med indeks):
@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'} )
«%» foran variabelnavnet gir en liste bestående av nøkler og verdier i parvis vilkårlig rekkefølge, om variabelen holder en hash:
%adresse # samme som ( 'Per', $adresse{'Per'}, 'Ola', $adresse{'Ola'} ),
# gitt nøklene 'Per' og 'Ola', i den rekkefølgen
«&» foran variabelnavnet gir en subrutine. Dette brukes vanligvis ikke ved kall til subrutinen, men noe oftere for å ta en referanse til den: $ref = \&bar; Variabelnavnet uten noe tegn foran kaller en subrutine hvis der følger parenteser eller hvis subrutinen er deklarert; ellers gir det vanligvis en fil- eller katalogpeker, avhengig av bruk: foo(1,2,3); # kaller subrutinen &foo close bar; # (lukker) filpekeren bar closedir baz; # (lukker) katalogpekeren baz EksemplerHello, world!#!/usr/bin/perl -w print "Hello, world!\n"; Løkker
while ( uttrykk ) {
...
}
do {
...
} while ( uttrykk );
do {
...
} until ( uttrykk );
for ( initialisering ; termineringsbetingelse ; økningsgrad ) {
...
}
foreach ( liste ) {
...
}
for ( liste ) {
...
}
If-then
if ( uttrykk ) {
...
}
unless ( uttrykk ) {
...
}
if ( uttrykk ) {
...
}
else {
...
}
if ( uttrykk ) {
...
}
elsif ( uttrykk ) {
...
}
else {
...
}
SubrutinerSubrutiner spesifiseres med nøkkelordet sub. Argumenter til subrutinen er tilgjengelige som elementer i den lokale (for subrutinen) tabellen @_. Kaller man en subrutine med tre 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',
);
ModulerMan kan samle funksjoner i en en biblioteksfil. I sin enkleste form kan dette gjøres slik i filen modtest.pm:
# definer navn på pakke
package modtest;
# strict og warnings hjelper deg i debugging, og hindrer deg
# å skrive slurvete kode.
use strict;
use warnings;
# trengs for å kunne eksportere funksjoner
use Exporter ();
our @ISA = qw( Exporter );
# her eksporterer vi funksjonene
our @EXPORT = qw( hello helloname );
sub hello {
print "hello world\n";
}
sub helloname {
my ( $name ) = @_;
print "hello $name\n";
}
## returner 1 etter initiering av modul
1
Modulen brukes så på følgende måte: #!/usr/bin/perl use strict; use warnings; use modtest; hello(); helloname( "you" ); #end.. Merk at modulen ( modtest.pm ) må ligge i en av perls systemmapper ( se hva som ligger i @INC ). Perl og databaserDBI-grensesnittet er den løsningen som oftes blir brukt for å kommunisere med de fleste ANSI SQL-databasene, som f.eks. MySQL, PostgreSQL og Oracle. 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 | JavaScript | Lisp | ML | Modula | Objective-C | OCaml | O'Haskell | Pascal | Perl | PHP | Pike | PL/I | Plankalkül | Prolog | Python | Ruby | Scheme | Simula | SML | Visual Basic
|
|||||||||||||||||||||||||
This article is from Wikipedia. All text is available under the terms of the GNU Free Documentation License.
Mercedes Car
This site monitored by SitePinger.net