Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaÁgnes Halászné Megváltozta több, mint 10 éve
1
Scriptnyelvek 9. gyakorlat Papp Gyula gyupa@digitus.itk.ppke.hu 2010. április 29.
2
Tartalom Reguláris kifejezések Hibakezelés
3
Reguláris kifejezések 1 Reguláris kifejezést általában / jelek közé tesszük, de tehetjük más közé is, csak akkor kell 'az m' (ld. később) Mintaillesztés a =~ operátorral illetve a !~ operátorral történik Használható feltételben is if ( $line =~ /^\w+/ ) {... } A '()' karakterekkel körbezárt csoportok a $1, $2,... változókban érthetek el ◦ print “$1” if $line =~ /^(\w+)/;
4
Reguláris kifejezések 2 Az illesztés visszaadja egy listában a csoportokat ◦ my ($dir, $filename) = $absolute_path =~ m#(.*)/([^/]*)#; ◦ my ($dir, $filename) = $absolute_path =~ m#(.*)/(.*)#; Csere is könnyen megy: ◦ my $s = “Peti fizika jegye: 1”; $s =~ s/\d$/5/; Minden előfordulás cseréje: ◦ my $s = “Itt a meggy. Kell a meggy?”; $s =~ s/meggy/dinnye/g;
6
Feladat 1 Egy, a standard inputról beolvasott stringről döntsd el, hogy dátum-e! Fogadja el pl. az alábbiakat: ◦ 2008/11/21 ◦ 2008-10-01 Próbálj meg megszorításokat megfogalmazni a hónapokra és a napokra!
7
Feladat 2 Gyűjtsd össze egy szöveg szavait egy listába!
8
Hibakezelés I Feladat ◦ próbál kapcsolódni ◦ ha sikerül, folytassa a munkát ◦ ha nem sikerül, lépjen ki hibával Így írnánk meg: ◦ my $conn = get_connection(); unless (defined $conn) { die “Cannot connect: $!\n”;} # do the work
9
Hibakezelés 2 Írhatnánk ezt is: ◦ my $conn; unless (defined $conn = get_connection()) { die “Cannot connect: $!\n”;} # do the work De van más mód is Lusta kiértékelés ◦ and, or operátorok használhatóak, hiszen az értékadás is kifejezés ◦ &&, || is használhatóak, de ezeknek magasabb a precedenciájuk
10
Hibakezelés 3 my $conn = get_connection() or die “Cannot connect: $!\n”; Előnyei: ◦ tömör ◦ olvasható ◦ látszik a lényeg, nevezetesen, hogy kapcsolódni szeretnénk ◦ de közben korrekt hibakezelés is van ◦ Perl-es
11
Feladat 3 Olvass be egy fájl tartalmát, majd írd ki úgy, hogy minden mondat külön bekezdésbe kerüljön!
12
use strict; use warnings; use tmp; my $fajlnev = "index.html"; if ( $fajlnev !~ /\.[hH][tT][mM][lL]?$/ ) { die "Nem jo kiterjesztes!\n"; } open INPUT, $fajlnev or die $!; my @sorok = ; close INPUT; print tmp::atalakit(@sorok); sub atalakit { my @ujSorok; for (@_) { $_ =~ s/(<a href=)[^\s]+/$1LINK/g; push @ujSorok, $_; } return @ujSorok; } return 1;
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.