YaBB.nl

Log in of registreer jezelf.

Login met gebruikersnaam, wachtwoord en sessielengte
Geavanceerd zoeken  
Pagina's: [1]   Omlaag

Auteur Topic: [Leer perl] deel 1: Basis, scalars en arrays  (gelezen 11218 keer)

Zef Hemel

  • VIP
  • Die hard
  • *****
  • Offline Offline
  • Geslacht: Man
  • Berichten: 1870
    • ZefHemel.com
[Leer perl] deel 1: Basis, scalars en arrays
« Gepost op: 8 november 2001, om 14:52:22 »

Ok, dan gaan we nu van start met Perl. We beginnen met programma's die je makkelijk thuis kunt draaien op je pc. Je hebt eerst dus geen webserver nodig. Perl is immers niet slechts een webscripting taal.

Perl downloaden en installeren
Ik neem even aan dat jullie Windows gebruiken. Download de MSI van http://www.activestate.com/Products/ActivePerl/download.plex (als je geen Microsoft installer hebt download deze dan alsnog) let op dit pakketje is wel 12Mb. Na het downloaden gewoon dubbelklikken op het .msi bestand. De installatie zou zich verder zelf moeten wijzen.

Testen of het werkt
Als je Windows XP hebt (en dus geen msdos prompt oid) heb je een probleem, want die hebben we nodig. [edit by Jarno]In windows XP: Start->run  cmd < ENTER> Pracht van een dosbox[/edit]
Maak in je favouriete TEXT editor (notepad, ultraedit, editplus, als het maar geen word of wordperfect of iets dergelijks is) een bestand aan genaamd test.pl en zet het volgende er in:

#!c:\perl\bin\perl.exe

print "Hallo wereld!";

De eerste regel moet verwijzen naar waar bij jou perl is geinstalleerd, later zal ik uitleggen waarom dit zo is. Het formaat moet dus #!padnaarperl.exe zijn.

Start nu de ms-dos prompt en ga met behulp van cd naar de map waar je test.pl staat en type:

perl test.pl

Als het goed is, is de uitvoer

Hallo wereld!

Zo niet, dan is ergens iets mis gegaan.
Is het wel gelukt, dan mag ik je feliciteren, je hebt je eerste perl script geschreven! Niet moeilijk toch?

Wat betekent nu die eerste regel?
Perl is oorspronkelijk geschreven op het Unix platform als een shell scripting taal. Als je in Unix een bestand "uitvoerd" kijkt ie eerst of het een programma is (of de chmod op 7xx staat), zo ja kijkt 'ie of het gecompileerd is. Zo niet, leest hij de eerste regel. Als je een bash script hebt is die eerste regel iets in de vorm #!/bin/bash schrijf je het in perl dan is het #!/usr/bin/perl kortom hieruit filtert Unix het programma dat gestart moet worden om dit bestand uit te voeren. En uiteindelijk start Unix dat programma, dus #!/usr/bin/perl wordt uiteindelijk /usr/bin/perl <bestandsnaam hier>.

Gelogd

Zef Hemel

  • VIP
  • Die hard
  • *****
  • Offline Offline
  • Geslacht: Man
  • Berichten: 1870
    • ZefHemel.com
Re: Leer perl deel 1
« Reactie #1 Gepost op: 8 november 2001, om 14:52:43 »

Het principe
De perl interpreter leest het bestand dat je als parameter meegeeft van boven naar beneden. Staat er aan het begin van de regel een # dan stopt hij met lezen en gaat door naar de volgende regel (alles na een # is dus commentaar waar perl niks mee doet).
Opdrachten worden gescheiden door een ; en niet door een nieuwe regel te starten. Dus je kan dit doen:

print "Zef"; print "is"; print "Ehmmm...";

Maar dit kan niet:

print "Zef"
print "is"
print "iets"

Je krijgt dan ook een foutmelding, bijvoorbeeld:

syntax error at test.pl line 4, near "print"
Execution of test.pl aborted due to compilation errors.


Iets op het scherm zetten
Als je iets op het scherm wilt laten verschijnen kan dat met behulp van print. Je kan aan print meerdere parameters meegeven door ze te scheiden door komma's:

print "Hallo iedereen.", "is het nog wat te volgen?";

Let op, als een printstatement eindigd gaat perl niet automatisch door naar de volgende regel! Dus

print "Regel 1";
print "Nog steeds regel 1";

Print eigenlijk:

Regel 1Nog steeds regel1

Om toch naar de volgende regel te gaan gebruiken we een speciaal teken: \n (dat staat voor new line):

print "Regel 1\n";
print "Regel 2";

ziet er uit als:

Regel 1
Regel 2


Scalars
Perl biedt een aantal soorten variabelen: Scalars, arrays, hashes en references. De scalar is de simpelste soort. Je kunt het zien als een geheugen vakje waar je iets in kunt stoppen. Het maakt niet uit of dat een getal is, een aantal karakters of een heel tekstbestand, het is allemaal mogelijk. Je kunt een scalar herkenne aan de $ voor de naam. Je kunt een waarde toekennen aan een scalar dmv het = teken. Een paar voorbeelden:

$tekst = "In deze scalar stop ik wat tekst";
$getal = 5;
$kommagetal = 3.1415;

Je kan heel makkelijk simpele operaties met getallen uitvoeren zoals optellen, aftrekken, vermenigvuldigen delen en machtsverheffen:

$x = 5;
$y = 3;
$z = $x + $y; # $z is nu 8
$z = $z * 5; # $z is nu 8 * 5 = 40
$kwadraat = $y ** 2; # $kwadraat is 3^2 = 9

Perl kan strings (tekst) makkelijk naar getallen omzetten:

$x = "15"; # Nu is $x een string
$y = 2 * $x; # $y is nu 30

Als je variabelen wilt uitprinten is dat geen probleem, dat kan op meerdere manieren:

$x = 5;
print "X = $x\n"; # Print X = 5
print "We gaan X met 100 vermenigvuldigen. Het antwoord is: ";
$y = $x * 100;
print $y; # Print $y ook gewoon

Op variabelen zijn de zelfde regels van toepassing als die je bij wiskunde leert:

$x = 5 + 3 * 2; # $x is 11 geen 16
$x = (5 + 3) * 2; # Nu is $x dus 16

Het leuke is dat $x = 5 ook een waarde teruggeeft, dit klinkt misschien raar, maar dit voorbeeld moet veel dingen duidelijk maken:

$y = $x = 3*5;

Wat hier gebeurt is dat Perl eerst 3*5 uitrekend. Dat is 15, die waarde stopt 'ie in $x. De waarde van $y wordt nu de waarde van $x. Dit kan dus ook:

print 3 * ($x = 2+5); # Print 21
print "\n";
print $x; # Print 7

« Laatst bewerkt op: 1 januari 1970, om 01:00:00 door 1020117600 »
Gelogd

Zef Hemel

  • VIP
  • Die hard
  • *****
  • Offline Offline
  • Geslacht: Man
  • Berichten: 1870
    • ZefHemel.com
Re: Leer perl deel 1
« Reactie #2 Gepost op: 8 november 2001, om 14:53:15 »

Arrays
Perl kent ook arrays, dat zijn eigenlijk gewoon een groepje scalars. Je duidt een array aan met de @. Een paar voorbeeldjes:

@getallen = (1, 2, 3, 4, 5); # Maak een array aan met 5 elementen
print $getallen[3]; # Print 4 (!!)

Op de eerste regel geef je de @getallen array een aantal waarden. Op de tweede vraag je een van die waarden op. Maar dan moet het ineens met een $ ervoor, hoezo? Nou wat je toch eigenlijk terug vraagt is toch een scalar? Een array is immers een lijst scalars, en als je zegt dat je element zoveel uit de lijst wilt hebben vraag je dus om een scalar en is het resultaat ook een scalar. Verder moet je opmerken dat de de index die je opgeeft (tussen [ en ]) begint op element 0. $getallen[0] geeft je 1 terug en $getallen[4] geeft 5. $getallen[5] geeft een lege waarden, immers deze is niet toe gewezen.
Je kan ook een deel uit een lijst gebruiken om een nieuwe lijst te maken:

@getallen = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
@paar = @getallen[0, 1, 2]; # Maakt een nieuwe lijst, net als je had gezegd @paar = (1, 2, 3);
@paar2 = @getallen[3 .. 9]; # Geeft een lijst met de elementen 3 t/m 9 (4, 5, 6, 7, 8, 9, 10) dus
$x = $y = 5; # Zowel $x als $y zijn 5
@rijtje = ($x, $y); # maakt een lijst (5, 5);
($x, $y) = @getallen[0, 5]; # Nu is $x = 1 en $y = 4
($y, $x) = ($x, $y); # $x en $y zijn nu qua waarden verwisseld
$rijtje[1] = 12; # Kan ook gewoon

Kijk eens goed naar deze voorbeelden zou ik zeggen, ze zijn erg nuttig.

Tot zover deel 1 ;) Succes
Gelogd

StephanL

  • Internetfreak!
  • YaBB.nl Team
  • Die hard
  • *****
  • Offline Offline
  • Geslacht: Man
  • Berichten: 4528
Re: [Leer perl] deel 1: Basis, scalars en arrays
« Reactie #3 Gepost op: 9 november 2001, om 09:28:22 »

Dat is pech heb 2000 net ge-update met XP :'( maar we hebben gelukkig meer computers, dus straks effe aan de slag ;D
« Laatst bewerkt op: 1 januari 1970, om 01:00:00 door 1020117600 »
Gelogd
Internetfreak!

StephanL

  • Internetfreak!
  • YaBB.nl Team
  • Die hard
  • *****
  • Offline Offline
  • Geslacht: Man
  • Berichten: 4528
Re: [Leer perl] deel 1: Basis, scalars en arrays
« Reactie #4 Gepost op: 10 november 2001, om 10:52:02 »

Het stond er al mooi maar had er over heen gelezen ;D
Gelogd
Internetfreak!

Arien

  • Nieuw Lid
  • *
  • Offline Offline
  • Berichten: 2
  • The ... Spammer.
Re:[Leer perl] deel 1: Basis, scalars en arrays
« Reactie #5 Gepost op: 15 augustus 2002, om 08:37:08 »

Citaat
Citaat van: Zef Hemel
Als je Windows XP hebt (en dus geen msdos prompt oid) heb je een probleem, want die hebben we nodig. [edit by Jarno]In windows XP: Start->run  cmd < ENTER> Pracht van een dosbox[/edit]
s/msdos prompt|dosbox/command shell/g;  ;)

Citaat
De eerste regel moet verwijzen naar waar bij jou perl is geinstalleerd, later zal ik uitleggen waarom dit zo is. Het formaat moet dus #!padnaarperl.exe zijn.


Windows doet niets met de she-bang line (die #! regel). Het is dus handiger om daar een algemene *nix locatie van perl op te geven (zoals /usr/local/bin/perl of /usr/bin/perl) zodat je scripts onveranderd draaien op *nix systemen. (Zie ook "What's the equivalent of the shebang ("#!") syntax for Win32?" in de Windows Perl docs.)

Citaat
Als je in Unix een bestand "uitvoerd" kijkt ie eerst of het een programma is (of de chmod op 7xx staat), zo ja kijkt 'ie of het gecompileerd is.


Nee, zie de docs van GNU file-utils voor uitleg over file permissies en waarom beginnen sommige scripts met #! ?

Gelogd

Zef Hemel

  • VIP
  • Die hard
  • *****
  • Offline Offline
  • Geslacht: Man
  • Berichten: 1870
    • ZefHemel.com
Re:[Leer perl] deel 1: Basis, scalars en arrays
« Reactie #6 Gepost op: 15 augustus 2002, om 09:48:10 »

Grappig om je hier eens te zien Arien :)

Wat je zegt klopt idd
« Laatst bewerkt op: 15 augustus 2002, om 09:48:38 door Zef Hemel »
Gelogd

compufreak

  • Nieuw Lid
  • *
  • Offline Offline
  • Berichten: 3
  • Dit forum is het helemaal !
Re:[Leer perl] deel 1: Basis, scalars en arrays
« Reactie #7 Gepost op: 29 november 2002, om 11:30:38 »

als ik de commando "perl test.pl" ingeef dan geeft hij de fout: perl wordt niet herkend als een interne
of externe opdracht, programma of batchbestand.

wat moet ik doen...

PS: http://www.activestate.com/Products/ActivePerl/download.plex

daar heb ik gekeken maar er stond dat er voor XP niks nodig was ?
Gelogd

Zef Hemel

  • VIP
  • Die hard
  • *****
  • Offline Offline
  • Geslacht: Man
  • Berichten: 1870
    • ZefHemel.com
Re:[Leer perl] deel 1: Basis, scalars en arrays
« Reactie #8 Gepost op: 29 november 2002, om 13:39:44 »

Daar staat dat je voor XP geen MSI hoeft te installeren, Perl zelf wel natuurlijk ;D
Gelogd

spikecity

  • Gast
Re:[Leer perl] deel 1: Basis, scalars en arrays
« Reactie #9 Gepost op: 3 december 2002, om 00:27:23 »


Daar staat dat je voor XP geen MSI hoeft te installeren, Perl zelf wel natuurlijk ;D

Just enough reason to get drunk again ;D
Gelogd
Pagina's: [1]   Omhoog
 

Pagina opgebouwd in 0.143 seconden met 29 queries.