Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

Perl on Ohjelmointikieli, skriptikieli

Samankaltaiset esitykset


Esitys aiheesta: "Perl on Ohjelmointikieli, skriptikieli"— Esityksen transkriptio:

1 Perl on Ohjelmointikieli, skriptikieli
Practical Extraction and Report Language Pathologically Eclectic Rubbish Lister Käytetään usein ”liimaamaan” järjestelmiä Larry Wall Perl on kieli, perl on binääri Unix hallinnointi ja CGI ohjelmointi

2 Perlin edut Kehittämisen nopeus Voima Käytettävyys Siirrettävyys
Kehitys ympäristö Hinta Laajuus

3 Perus ohjelmointiympäristö
Notepad tms editori Kirjoita koodia Talleta C:\tiedostot hakemistoon cmd komentokehoite Suorita kehoitteella

4 Perl skripti On nimeltään jotakin.pl Alkaa aina näin: #!/usr/bin/perl
Sitten saa kirjoittaa koodia… esim: print ”Hei maailma!\n”; Suoritetaan komentoriviltä: C:\hakemisto>perl jotakin.pl

5 Syntaksin tarkistaminen
Alussa kannattaa lukea varoitukset: C:\hakemisto>perl –w jotakin.pl -w optio tarkistaa syntaksin ja varoittaa virheistä C:\hakemisto>perl –c jotakin.pl Syntaksi tarkistin –c kertoo onko OK Debuggeri käynnistetään näin C:\hakemisto>perl –d jotakin.pl

6 Parametrit Skriptille voi antaa parametrejä välilyönnillä erottaen
C:\hakemisto>perl jotakin.pl a b c Ne taulukkoon print ”$ARGV[0] on eka parametri\n”;

7 Parametrit Kaikkien parametrien tulostaminen foreach (@ARGV) {
print ”$_ \n”; }

8 Ympäristö Ympäristömuuttujat sijaitsevat %ENV taulukossa
foreach (keys %ENV) { print ”$_ = $ENV{$_}\n”; }

9 User input Skripti voi pysähtyä odottamaan käyttäjän syötettä
Syöte tulee standard input virrassa print ”Kirjoita jotain ja paina enter…”; $a = <STDIN>; print ”Kirjoitit: $a\n”;

10 Harjoitus 1 Kiinalainen niukkuuspeli
Kirjoita ohjelma, joka pyytää käyttäjältä luvun ja vastaa aina voittavansa niukasti yhdellä. Näytä myös lopputulos.

11 PerlDoc Perlin dokumentaatio sijaitsee täällä:
file:///C:/Perl/html/index.html

12 Aliohjelma sub aliohjelma { Foreach print ”$_ \n”; }

13 Aliohjelmakutsu Joko näin: aliohjelma (1,”aaa”,3); Tai näin:
$a = aliohjelma (1,2); Alempi odottaa paluuarvoa

14 Paluuarvo Aliohjelma voi palauttaa arvon $a = aliohjelma (1,2);
print ”Vastaus on $a\n”; sub aliohjelma { my ($a,$b) $c = $a + $b; return $c; }

15 Skalaarit muuttujat $muuttuja Tyypitön yksiarvoinen muuttuja
Merkkijono, luku tai muistiosoitus $a = 4; $b = ; $c = ”merkkijono”; $d = ”hassu $c”; #$c lavennetaan $e = ’hassu $c’; #$c ei lavenneta $f = `dir`;

16 Taulukko @ @taulukko = (); Yksittäinen alkio $taulukko[0]
$taulukko[1] = ”merkkijono”; foreach { print $_, ”\n”; }

17 Lista @ @lista = (10,”merkkijono”,10.12, $muuttuja); @lista1 = ();
@lista2 = (4,5,6,7,8,9); $viimeinen_indeksi = $#lista1; $alkioiden_lkm $vika =

18 Harjoitus 2 Kirjoita ohjelma, joka pyytää käyttäjältä sanoja ja laittaa ne taulukkoon kunnes käyttäjä antaa sanan loppu. Tämän jälkeen ohjelma tulostaa sanojen määrän ja sanat. Käytetään do … while silmukkaa Puraistaan väärät merkit pois: chomp Evaluoidaan totuus eq:n negaatiolla ne

19 Harjoitus 2 #!/usr/bin/perl do { print "Anna sana: ";
$sana = <STDIN>; chomp($sana); push $sana); }while ($sana ne "loppu"); $a foreach print "$_ \n"; } print "Alkioita oli $a kpl\n"; Harjoitus 2

20 Assosiatiivinen taulukko %
%hash_taulukko = (); %config = ( ”polku” => ”/usr/bin/joku”; ”url” => ” ”debug” => $debug; );

21 Harjoitus 3a #!/usr/bin/perl %config = (); $debug = 1; %config = (
"polku" => '/usr/bin/joku', "url" => ' "debug" => $debug ); print "Mikä polku, url vaiko debug? : "; $a = <STDIN>; chomp($a); print "\n $a on $config{$a}"; Harjoitus 3a

22 Assosiatiivinen taulukko % viittauksena
$href; $href->{ 'key' } = 'value'; $href->{ $key } = $value;

23 Harjoitus 3 b #!/usr/bin/perl $config; $debug = 1;
$config->{"polku"} = '/usr/bin/joku’; $config->{"url"} = ' $config->{"debug"} = $debug; print "Mikä polku, url vaiko debug? : "; $a = <STDIN>; chomp($a); print "\n $a on $config->{$a}";

24 Harjoitus 3c Lisää edelliseen sorttaus ja kaikkien parametrien tulostus for my $sender ( sort keys %from ) { print "$sender: $from{$sender}\n"; } Tai for my $sender ( sort keys %{$from} ) { print "$sender: $from->{$sender}\n"; }

25 Ehtolauseet Testataan onko ehto voimassa vai ei eli evaluoidaan lausekkeen totuusarvo Merkkijono on tosi tyhjä merkkijono tai ”0” on epätosi Luku on tosi 0 on epätosi Olemassaoleva viittaus on tosi

26 if … else if (ehto) { } elsif (ehto) { } else{ }

27 if print ”Tosi on!” if ($a); unless $title = $header unless($title);

28 Vertailuoperaattorit
Luvut Merkkijonot Selitys $a == $b $a eq $b Tosi jos $a ja $b yhtäsuuret $a != $b $a ne $b Tosi jos $a ja $b erisuuret $a <= $b $a le $b Tosi jos $a pienempi tai yhtäsuuri kuin $b $a < $b $a lt $b Tosi jos $a pienempi kuin $b $a >= $b $a ge $b Tosi jos $a suurempi tai yhtäsuuri kuin $b $a > $b $a gt $b Tosi jos $a suurempi kuin $b

29 Harjoitus 4 Tee perl ohjelma joka kysyy käyttäjältä kaksi lukua ja kertoo ovatko annetut luvut yhtäsuuret vai onko jompikumpi suurempi.

30 Silmukat while do … while for foreach
Pois silmukasta pääsee komennoilla next ja last

31 while while (ehto) { Toimintaa… }

32 do … while do { toimintaa… }while (ehto);

33 for for ($i=0; $i<=10; $i++) { Toimintaa… } for $i (0..10)

34 foreach foreach { Toimintaa (muista $_) }

35 Harjoitus 5 Tee perl ohjelma, joka pyytää käyttäjältä lukuja ja lopettaa kun haluttu summa on saavutettu. Jos käyttäjä syöttää muuta kuin numeron annetaan herja ja jatketaan. #!/usr/bin/perl while (1) { print "Anna numero: "; $a = <STDIN>; chomp($a); if ($a =~ /\d/) #print "Nummero"; $b += $a; } else print "Siis numeroita pyydettiin!\n" last if ($b >= 10); print "Summa on $b";

36 Tiedostot Tiedostoja luetaan KAHVAN kautta
Tiedosto avataan luku <, kirjoitus > tai täydennystilaan >> $tied = ”c:\\tiedostot\\lista.txt”; open (KAHVA, ”<$tied”); while (<KAHVA>){ print ”$_ \n”; } close KAHVA;

37 Tiedostot Tiedostoon krjoittaminen print komennolla
$tied = ”c:\\tiedostot\\teksti.txt”; open (KAHVA, ”>$tied”); print KAHVA ”normaali merkkijono…”; Tämä siis ylikirjoittaa! open (KAHVA, ”>>$tied”); Kirjoittaa tekstin perään

38 Random Satunnaisluvun generointi $lower=1; $upper=14;
$random = int(rand( $upper-$lower+1 ) ) + $lower; print $random,"\n";

39 Harjoitus 5 Ventti Lisää vaikeusasteita: Pelaaja pyrkii saamaan 21
Yli menee metsään eli häviää heti Kirjoita ohjelma, joka tarjoaa ensin käyttäjälle kortteja (arvot1-14) ja kertoo aina summan Kun käyttäjä ei enää halua kortteja, jaetaan piilossa emännän käsi. Lopuksi kerrotaan tulos ja voittaja Lisää vaikeusasteita: Kirjoita jokaisen pelin tulos tiedostoon Pyydä panos ja kirjaa häviöt ja voitot tiedostoon Emännällä ventiksi riittää 20 Ässä on 1 tai 14 tilanteesta riippuen Viiden kortin ventti Tulosta lopuksi kuitti voitoista/häviöistä kassalle…

40 Regular Expressions Hakuja merkkijonoista
Korvataan merkkijonoja toisilla Etsitään tiettyjä merkkejä Tarkistetaan syötteiden oikeellisuus Säännönmukainen lauseke kirjoitetaan / / merkkien sisälle ASCII merkkejä ja erikoismerkkejä

41 Regular Expressions $a = ”abcabcaBcabc”;
if ($a =~ /ab/){print ”löytyi\n”} if ($a =~ /Ab/i){… if ($a =~ /^b/){… if ($a =~ /c$/){… if ($a =~ /^abc$/){… if ($a =~ /…abc/){… if ($a =~ /[ab]|[AB]/){… if ($a =~ /^(a[b|B]*c)*/){…

42 Substitute Korvataan merkkijono toisella $a =~ s/abc/cde/;
$a =~ s/ä/a/g; $a =~ s/^\s+//; $a =~ s/\s+$//; $a =~ s/\s+/ /g;

43 Sähköpostin tarkistus
if ($ =~ Jäsentäminen Aikaleima muotoa $ts =~ /^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{3})$/; print ”Vuosi = $1, kuukausi = $2, päivä = $3 jne…”;

44 Split Merkkijonon jakaminen merkin avulla $pvm = ”2006:10:25”
($v,$kk,$pv) = split /:/, $pvm; @sanat = split /\s/, $lause; ($avain,$arvo) = split /=/, $param; $$avain = $arvo;

45 Sisäänrakennetut funktiot
each(AARR) Palauttaa (seuraavan) indeksi-arvo-parin (2-alkioinen taulukko) annetusta assosiatiivisestä taulukosta. Komennon avulla voidaan siis käydä assosiatiivisen taulukon alkiot läpi. exec(COM) Suorittaa annetun systeemikomennon, eikä koskaan palaa. exists $t{$i} Palautta TOSI, jos indeksi $i löytyy taulusta %t. exit(RET) Lopettaa suorituksen ja palaa arvolla RET. Palauttaa taulukon (tai täsmänneiden lkm) sisältäen ne alkiot, joihin merkkijonolauseke re täsmäsi. index(S,SS,P) Palauttaa ensimmäisen SS:n esiintymän paikan merkkijonossa S (tai paikan P jälkeen, jos käytössä, P on siis optio). join(FS,LIST) Splitin vastakohta. Liittää listan tai taulukon erillisiä merkkijonoja (LIST) yhdeksi merkkijonoksi, jossa kenttäerottimena FS. keys(AARR) Palauttaa taulukon, joka koostuu annetun assosiatiivisen taulukon indekseistä (nimistä). length(S) Palauttaa merkkien lukumäärän annetussa merkkijonossa. Jos parametria ei anneta, $_:n pituus. print FH LIST Tulostaa merkkijonon tai pilkulla erotellun listan merkkijonoja. FH on tiedostokahva,johon tulostetaan.

46 Sisäänrakennetut funktiot
printf FH LIST Kuten print, mutta mahdollisuus tulostaa formatoidusti, kuten C-kielessä. rand UL Palauttaa satunnaisluvun väliltä 0-UL. reverse LIST Palauttaa parametrina annetun listan (esim. merkkijono) käänteisessä järjestyksessä. rindex(S,SS,P) Kuten index, mutta palauttaa viimeisen SS:n paikan merkkijonossa S. sleep SEC Laittaa skriptin nukkumaan parametrina sekunteina annetuksi ajaksi. sort LIST Palauttaa parametina annetun listan (esim. merkkijono) lajiteltuna. split(FS,STR) Jakaa merkkijonon taulukkoon. FS (voi olla regexp) ilmaisee kenttäerottimen, jonka mukaan merkkijono STR jaetaan. sprintf(FMT,LIST) Palauttaa FMT:n mukaan formatoidun merkkijonon listasta muuttujia (LIST). srand Asettaa siemenluvun rand-operaattorille. system(COM) Kuten exec, mutta ensin luodaan lapsiprosessi (fork). Jää odottamaan komennon paluuta. values(AARR) Palauttaa taulukon, joka koostuu annetun assosiatiivisen taulukon arvoista (vrt. keys). 


Lataa ppt "Perl on Ohjelmointikieli, skriptikieli"

Samankaltaiset esitykset


Iklan oleh Google