Pożyteczne linki: PERL Practical Extraction and Report Language

Podobne dokumenty
PERL Practical Extraction and Report Language

Bash - wprowadzenie. Bash - wprowadzenie 1/39

System operacyjny Linux

Narzędzia informatyczne w językoznawstwie

Podstawy programowania. Wykład: 4. Instrukcje sterujące, operatory. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Instrukcje. Operatory. Operatory. Instrukcje sterujące. wyrażenie1 && wyrażenie2 ;

Dzisiejszy wykład. Programowanie w Perlu. Usuwanie elementów z początku tablicy. Dodawanie elementów do początku tablic

2 Przygotował: mgr inż. Maciej Lasota

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach:

Lekcja 1. Składnia języka zmienne i podstawowe instrukcje PHP. Do wyświetlania tekstu służy instrukcja echo echo Hello world ;

PERL. Practical Extraction and Report Language Pathologically Eclectic Rubbish Lister

Dzisiejszy wykład. Programowanie w Perlu. Co to jest hasz? Inicjalizacja haszów

Operatory cd. Relacyjne: ==!= < > <= >= bool b; int i =10, j =20; dzielenie całkowitych wynik jest całkowity! Łączenie tekstu: + string s = "Ala ma ";

Zmienne, stałe i operatory

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

Narzędzia informatyczne w językoznawstwie

Pętla for. Wynik działania programu:

1 Podstawy c++ w pigułce.

pico mojskrypt bash mojskrypt chmod +x mojskrypt./mojskrypt

Tworzenie skryptu: Skrypty powłoki

Instrukcje warunkowe i skoku. Spotkanie 2. Wyrażenia i operatory logiczne. Instrukcje warunkowe: if else, switch.

Administracja sieciowymi systemami operacyjnymi III Klasa - Linux

Podstawy Informatyki. Kompilacja. Historia. Metalurgia, I rok. Kompilatory C++ Pierwszy program. Dyrektywy preprocesora. Darmowe:

Podstawy Informatyki. Metalurgia, I rok. Wykład 6 Krótki kurs C++

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

Wstęp do informatyki. stęp do informatyki Polecenia (cz.2)

PODSTAWY INFORMATYKI

ZMIENNE. Podstawy PHP

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Wprowadzania liczb. Aby uniknąć wprowadzania ułamka jako daty, należy poprzedzać ułamki cyfrą 0 (zero); np.: wpisać 0 1/2

Odczyt danych z klawiatury Operatory w Javie

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk

Podstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń.

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 10 Kurs C++

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

Podstawy bioinformatyki 2017/18

1 Podstawy c++ w pigułce.

Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem.

1 Przygotował: mgr inż. Maciej Lasota

Programowanie 2. Perl - Tablice asocjacyjne oraz funkcje tablicowe. Marcin Junczys-Dowmunt

Komentarze w PHP (niewykonywane fragmenty tekstowe, będące informacją dla programisty)

KARTA KURSU. Języki skryptowe

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Skrypty powłoki w systemie Linux

Dzisiejszy wykład. Narzędzia informatyczne w językoznawstwie. Usuwanie elementów z początku tablicy. Dodawanie elementów do początku tablic

JAVASCRIPT PODSTAWY. opracowanie: by Arkadiusz Gawełek, Łódź

System operacyjny Linux

Programowanie obiektowe

Kiedy i czy konieczne?

Podstawy programowania skrót z wykładów:

Ogólny schemat prostego formularza: A może lepiej zamiast przycisku opartego o input tak:

Programowanie komputerowe. Zajęcia 1

Instrukcje sterujące. Programowanie Proceduralne 1

Laboratorium 3: Tablice, tablice znaków i funkcje operujące na ciągach znaków. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

Przetwarzanie tekstu 2. Operacje na plikach tekstowych w systemie Linux

PL/SQL. Część 1 Bloki PL/SQL. Piotr Medoń

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

Algorytmika i Programowanie VBA 1 - podstawy

Programowanie w języku Python. Grażyna Koba

Podstawy programowania w języku Visual Basic dla Aplikacji (VBA)

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

C++ wprowadzanie zmiennych

Programowanie skryptów powłoki

Cw.12 JAVAScript w dokumentach HTML

Ćwiczenie 1. Wprowadzenie do programu Octave

HTTP, CGI, Perl. HTTP HyperText Transfer Protocol. CGI Common Gateway Interface. Perl Practical Extraction and Report Language

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

Wstęp do informatyki- wykład 5 Instrukcja selekcji if-else Operatory arytmetyczne i logiczne

Język skryptowy: Laboratorium 1. Wprowadzenie do języka Python

Serwer WWW Apache. Plik konfiguracyjny httpd.conf Definiujemy m.in.: Aktualne wersje 2.4.6, , zakończony projekt

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char

Python. Skąd taka nazwa? Kurs systemu UNIX 1

Podstawy Informatyki sem. I 2014/2015 studia zaoczne Elektronika i Telekomunikacja!

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

do instrukcja while (wyrażenie);

Algorytm. a programowanie -

JAVASCRIPT PODSTAWY. opracowanie: by Arkadiusz Gawełek, Łódź

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 2. Programowanie komputerowe

Podstawy Programowania C++

Warunki logiczne instrukcja if

dr inż. Jarosław Forenc

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 4. Karol Tarnowski A-1 p.

Operatory w C++ Operatory arytmetyczne. Operatory relacyjne (porównania) Operatory logiczne. + dodawanie - odejmowanie * mnożenie / dzielenie % modulo

Podstawy Programowania Podstawowa składnia języka C++

Ćwiczenie 1. Wprowadzenie do programu Octave

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

Pętle. for, while, do... while, foreach. Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.

- wszystkie elementy - wszystkie elementy

Systemy operacyjne. Programowanie w shellu: BASH. Wydział Inżynierii Metali i Informatyki Przemysłowej

Właściwości i metody obiektu Comment Właściwości

Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop Spis treści

J ezyk AWK Kurs systemu UNIX

Powłoka bash. Kurs systemu Unix 1

Transkrypt:

PERL Practical Extraction and Report Language Autor - Larry Wall. Jest to interpretowany język programowania, do przeszukiwania i wydobywania informacji z plików tekstowych i do generowania raportów na podstawie zebranych danych. Posiada wiele cech innych języków, m. in. języka C. Jest idealnym językiem do tworzenia skryptów CGI. Skrypty Perla są niezależnie od platformy użytej do jego wykonania. Mimo nieznacznych różnic, przeniesienie kodu z jednej platformy na inną odbywa się bez jakichkolwiek modyfikacji. Wszystkie zadania, jakie realizowane są w C, można by wykonać w Perlu. Pozwala on konstruować skomplikowane struktury danych i programować w stylu obiektowym. Pożyteczne linki: Strona główna: http://www.perl.com/ Kurs Perla 5: http://wieluk.republika.pl/index.html FAQ: http://www.kt.agh.edu.pl/other/perl/faq/ Instalki:http://www.activestate.com/ASPN/Downloads/ActivePerl/ CPAN (Comprehensive Perl Archive Network) źródło dokumentacji oraz modułów do języka Perl. (umożliwiają dostęp do baz danych czy protokołów komunikacyjnych, tworzenie obrazków, wykonywanie skomplikowanych operacji matematycznych). Wszystkie moduły są darmowe; większość z nich została udostępniona na licencji Artystycznej lub GNU GPL http://www.cpan.org/ Pisanie i uruchomienie skryptu: Skrypt piszemy w edytorze tekstu wykonanie: perl nazwaskryptu możemy też podać interpreter: pierwsza linia skryptu musi mieć postać:, a sam skrypt musi mieć atrybut wykonywalności W Windows skrypt powinien mieć rozszerzenie.pl Zmienne skalarne: $a=5 #całkowita $b=5.25 #ułamek $c=5e-4 #wykładnicza (5*10-4 ) $d=012 #ósemkowa $e=0xff #szesnastkowa $f='h=$a' #łańcuch bez interpretacji $g="h=$a" #łańcuch z interpretacją Wartość $f:h=$a ; $g:h=5 Operatory arytmetyczne: + dodawanie 2+3 =5 - odejmowanie 5-3 =2 * mnożenie 3*4 =12 / dzielenie 25/2 =12.5 ** potęgowanie 5**3 =125 % modulo (reszta z dzielenia) 15%4 =3 Priorytet: **, *, /, %, +, - Operatory relacji: == lub eq równy!= lub ne nierówny < lub lt mniejszy > lub gt większy <= lub le mniejszy lub równy >= lub ge większy lub równy Operatory logiczne: && - and - or! - not 1

Wszystkie zmienne skalarne za wyjątkiem: "" (łańcucha pustego) 0 (zera) wartości niezdefiniowanej mają wartość logiczną true Operatory przypisania: += $a+=3 $a=$a+3 -= $b-=5 $b=$b-5 *= $c*=7 $c=$c*7 /= $d/=2 $d=$d/2 **= $e**=3 $e=$e**3 %= $f%=10 $f=$f%10 Inkrementacja i dekrementacja ++$a zwiększ o 1 po czym zwróć wartość $a++ zwróć wartość po czym zwiększ o 1 --$a, $a-- j.w, ale zmniejsz o 1 Łączenie łańcuchów:. - operator łączenia łańcuchów x - operator powtarzania łańcucha $a='ala'; $b='kota'; $c=$a. ' ma '. $b; # $c='ala ma kota' $c=$a x 4; #$c='alaalaalaala' Wejście/wyjście Wczytanie z klawiatury: $a= <STDIN>; z usunięciem \n: chomp ($a=<stdin>); Wydruk na ekranie: print $a; Przykłady print "Licznik: "; chomp($a = <STDIN>); print "Mianownik: "; chomp($b = <STDIN>); $c = $a / $b; print "Ulamek to $c\n"; $c*=100; print "Procent to $c\n"; print "Napis: "; $a = <STDIN>; print "Ile razy powtorzyc: "; chomp($b = <STDIN>); $c = $a x $b; print "Nowy napis:\n$c"; Tablice zwykłe @liczbowa=(2, 5, 7, 23); @tekstowa=('ala', 'ma', 'kota'); @mieszana=(2.18, 'ala', $a, 2+2); dostęp do elementu tablicy przez jej nazwę i indeks (od 0) $tekstowa[0] (='ala') $tekstowa[2] (='kota') zmiana elementu: $tekstowa[2]='psa'; dopisanie elementu: $tekstowa[3]='burka'; Tablica @ARGV zawiera argumenty skryptu (ale bez jego nazwy) Nazwa skryptu - $0 Tablice rozproszone %tablica=(klucz, wartość,klucz,wartość,klucz,wartość..); lub %tablica=(klucz=>wartość,klucz=>wartość...) przykład: oceny z egzaminu %oceny=('kowalski'=>3.5,'nowak'=>4,'cias'=>5); Odwołanie do elementu: $oceny{'kowalski' =3.5 Dopisanie elementu: $oceny{'batko'=2; Skreślenie elementu delete $oceny{'batko'; 2

if (wyrazenie1) { instrukcje1; elsif (wyrazenie2) { instrukcje2;... else { instrukcje_n; Warunki Wyrażenia muszą zwracać prawdę lub fałsz Zapis skrócony: wyrazenie? instr_prawdy : instr_fałszu; while (wyrazenie) { #wykonywana tak długo, jak długo wyrażenie jest true until (wyrazenie) { #wykonywana tak długo, jak długo wyrażenie jest false : do { while (wyrazenie) lub do { until (wyrazenie) muszą się wykonać co najmniej raz for (początkowy; wyrazenie; zmiana_indeksu) { np. for ($i = 1; $i < 10; $i++) { print $i; foreach $zmienna (@tablica) { #dla tablicy zwykłej foreach $zmienna (keys %tablica_rozpr) { #dla tablicy rozproszonej, za zmienną podstawia klucze foreach $zmienna (1..9) { #podstawia za zmienną 1,2,3,4...9 foreach $zmienna ('ala', 5, $a) { #podstawia za zmienną kolejno to co na liście Modyfikacja przebiegu pętli: last wychodzi z pętli i wykonuje następne instrukcje next przerywa bieżący cykl i przechodzi na początek pętli redo powtarza bieżący cykl pętli (nie sprawdza warunki i nie modyfikuje licznika Przykłady print "Jaka temperatura? "; chomp($temperatura = <STDIN>); if ($temperatura > 0) { print "Dodatnia\n"; elsif ($temperatura < 0) { print "Ujemna\n"; else { print "Zero\n"; print "Wprowadz pierwsza liczbe. 999 konczy wprowadzanie: "; chomp($a = <STDIN>); $i=0; while ($a!= 999) { $suma += $a; $i++ ; print "Wprowadz kolejna liczbe 999 oznacza koniec: "; chomp($a = <STDIN>); $s=$suma/$i; print "Srednia tych liczb wynosi $s\n"; Operacje na tablicach Fragment tablicy: @tydzien = ('poniedziałek', 'wtorek', 'środa', 'czwartek', 'piątek', 'sobota', 'niedziela'); @weekend = @tydzien[5, 6]; @robocze = @tydzien [0..4]; Dla tablic rozproszonych: %fragment = %tablica{'klucz1', 'klucz3', 'klucz6'; Sortowanie tablic zwykłe według wartości (ASCII lub numerycznie) rozproszone według klucza (sortuje klucze) 3

Przykład print "Wprowadz liste nazwisk, na koniec ^D:\n"; @lista = <STDIN>; @posortowana= sort @lista; @odwrocona = reverse @posortowana; print "Posortowane rosnaco:\n"; print @posortowana ; print "Posortowane malejaco:\n"; print @odwrocona ; Operacje na tablicach/listach Przeszukiwanie: $dzien = 'poniedziałek'; $szuk = 'dzia'; $pozycja = index $dzien, $szuk; # (= 5) szukanie bez powodzenia zwraca wartość ujemną Modyfikowanie elementów listy push: dodaje element (listę) na koniec listy; pop: usuwa element z końca listy; unshift: dodaje element (listę) na początek listy; shift: usuwa element z początku listy; splice: dodaje lub usuwa dowolny element listy. Operacje na tablicach/listach Modyfikowanie elementów listy, cd reverse: odwraca kolejność elementów listy; split: rozdziela łańcuch na elementy listy; @nowa=split /;/, $lancuch; (dzieli przy średnikach) join: skleja elementy listy w łańcuch map: wykonuje takie same działania na wszystkich elementach listy index, rindex znajdowanie podłańcuchów substr: wycina fragment łańcucha (pozycja, długość). Porównanie wzorców $lancuch = 'wzorzec'; $lancuch =~ m/wzorzec/ zwraca true, gdy w łańcuchu występuje wzorzec, np. if ($lancuch =~ m/wzor/){ print "jest\n"; else { print "nie ma\n"; /^wzor/ #początek wiersza /wzor$/ #koniec wiersza /wzor\b/ #koniec słowa /\bnie\b/ #tylko całe słowo nie /^Ala ^Ola/ /^(Ala Ola)/ #Ala lub Ola na początku wiersza Klasy znaków /[ab]/ # /a/ lub /b/ /[a-d]/ # Odpowiada /[abcd]/ /[a-d1-5]/ # /[abcd12345]/ /[^ab]/ # wszystko za wyjątkiem a i b \d [0-9] #tylko cyfry \D [^0-9] #nie cyfry \w [0-9A-Za-z] #znaki słowa \W [^ 0-9A-Za-z] #nie znaki słowa \s [' '\t\n\r\f] #znaki "białe" (spacja, nowa linia,nowa strona, tabulator) \S [^' '\t\n\r\f] #wszystko poza znakami białymi np. /\d\d\d\d/ #prawda, gdy cztery cyfry znak? znak* znak+ Dopasowywanie znaków wielokrotnych znak musi wystąpić 0 lub 1 raz znak musi wystąpić 0 lub 1..n razy znak musi wystąpić co najmniej 1 raz /zm\w?/ #dopasowuje zm, zm1, zm2, zma, zmb /zm\d*/ #dopasowuje zm, zm1, zm11, zm12345 /zm\d+/ #dopasowuje zm1,zm999, ale nie zm /zm\d{2,5#pasujące to zm z 2 do 5 cyframi 4

Procedury sub nazwa { Wywołanie: &nazwaproc(); Przekazanie danych do procedury: &nazwaproc ($arg1,$arg2,$arg3...); Wewnątrz procedury widziane jako składniki tablicy @_ $_[0],$_[1],... Zwracanie wartości: sub suma {... return $a+$b; #wywołanie w głównym: $sum=&suma; Wejście, wyjście, pliki $lancuch=<stdin>; cała linia z wejścia podstawiona za zmienną lancuch @tablica=<stdin>; wszystkie wiersze z wejścia jako elementy tablicy print $zmienna; zmienna drukowana na standardowym wyjściu open (plik,"sciezka/nazwa"); #do odczytu open (plik,">sciezka/nazwa"); #do zapisu open (plik,">>sciezka/nazwa"); #do dopisania open (plik, "plik.txt") die "Nie można otworzyć pliku"; #die - w przypadku błędu $lancuch = <PLIK>; print plik, $zmienna; close plik; 5