Kurs Perl by VR8

VR8

Moderator
Członek Załogi
Dołączył
Wrzesień 24, 2011
Posty
325
KursPerla by VR8



Wstęp

To mój pierwszy kurs.
Nie mam zamiaru tutaj opisywać wszystkiego na temat np. zmiennych, trochę teorii i przykład użycia.
Sam przeczytałem tylko jeden kurs Perla, przeanalizowałem kilka exploitów, pogooglowałem; 1 dzień i znam podstawy. Resztę nauczyłem się w trakcie.
Postaram się tu streścić podstawy i trochę więcej.. ;)
A więc...

1. Pierwszy program

Tak będzie wyglądał nasz pierwszy program:
Kod:
[b]#!usr/bin/perl

print "Hello World!";[/b]

#!usr/bin/perl - to odwołanie do interpretera, to raczej pod Linuxa ale pod windą też działa.

print - to jedna z funkcji wywołujących tekst.
Aby działała, trzeba umieścić nasz tekst w cudzyslowiach czyli " ".
Zakończenie funkcji to " ; ". Jeżeli go nie umieścimy to funkcja będzie ciągnąć dalej i oczywiście wywoła błąd.

2. Drugi program

Więc...
Kod:
#!usr/bin/perl

$text = "Hello World 2!";

print $text;

$text to zmienna skalarna. Aby dodać zmienną skalarną należy w nowej linii napisać "$(nasza_nazwa)"
Zmienne skalarne to takie jakby schowki, do wielokrotnego wykorzystania zawartości. Czasami są niezbędne.
Można w nich umieścić tekst, ale też funkcje które opiszę później.

W tym programie do zmiennej schowaliśmy tekst "Hello World 2!" a później wywołaliśmy ten tekst funkcją print.

Jeżeli jest konieczność umieszczenia 2 zmiennych skalarnych obok siebie, musimy pomiędzy nie wstawić kropkę.
$text1 = "Hello ";
$text2 = "World 2!";

print $text1.$text2;


Kropką oddzielamy wszystko co musi stać obok siebie. np.

$text1 = "Hello ";
$text2 = "World 2!";
$text3 = "Moj drugi program.";

Aby wywołany tekst nie wyglądał tak: Hello World 2! Moj drugi program. musimy dodać nową linię.
Możemy dodać to na 2 sposoby.
1.
do $text3 musimy dodać "\n"
\n to znak nowej lini.
2.
print $text1.$text2."\n".$text3;
Mamy tu 3 zmienne skalarne i kawałek tekstu.
W tym przypadku to jest znak nowej linii, ale może tam leżeć dosłownie wszystko.

NIE robimy tak:
print $text1.$text2."\n"."Moj drugi program";

Program który napiszemy w ten sposób będzie działać poprawnie, ale po co klikać w niepotrzebne literki.
print $text1.$text2."\nMoj drugi program";
UWAGA! Brak spacji między \n a tekstem jest celowy! Jeżeli pomiędzy znak nowej linii a tekst dodamy spację wyjdzie to tak:
[spacja]Moj drugi program
Czyli oddalimy tekst od lewej części programu, o jeden odstęp.

3. Tablice

Ok.
Kod:
#!usr/bin/perl

@tablica = ("tekst1", "lub funkcja2", "albo tekst3", "możemy tu dać wszystko.");

print @tablica[1];

Do tablicy, tak jak do zmiennej skalarnej dodajemy "znak rozpoznawczy" czy to tablica, hash(nie opiszę go tutaj, bo zazwyczaj go nie używam. Nie ma w nim żadnego porządku, jego znak rozpoznawczy to "%"), czy zmienna skalarna.

Do tablicy dodajemy tekst lub funkcje.
Możemy jedno i drugie.
Tablica jak widać na przykładzie wygląda tak : @tablica = ("lol, "lol", "lol");
To co jest w niej zawarte musi być w
a) nawiasie
b) cudzysłowiu
c) musi być oddzielone przecinkiem

Aby wywołać całą tablicę stosujemy poprostu "@tablica".
Jeżeli chcemy wywołać tylko jeden tekst/funkcje która się w niej znajduje robimy tak:
@tablica[1]
Czyli pierwszy tekst lub funkcje.

Dużo razy użyłem tu wyrazów "tekst lub funkcje".

Jeżeli to byłby program, mógłbym sobie to uprościć robiąc coś takiego

$tf = "tekst lub funkcje";

Dużo razy użyłem tu wyrazów $tf

Więc..

Podsumowanie

Kod:
#!usr/bin/perl
#To jest komentarz

print "To już koniec..."; // Komentarz 2
print "\nMam nadzieję że nauczyliście się tu podstaw Perla";

$zms = "zmienna skalarna";
$tab = "tablica";

print "\nWiecie już co to ".$zms.", i ".$tab.".";
print "\nTeraz opiszę jeszcze kilka funkcji.";

4. Kilka funkcji

Po #!usr/bin/perl dodajemy funkcje.
np. use LWP::UserAgent; , use HTTP::Cookies.

LWP::UserAgent to funkcja która obsługuję przeglądarkę.
Aby ją wywołać używamy (np.)
$lwp = LWP::UserAgent -> new;

Jeżeli piszemy exploita (remote) to musimy użyć przeglądarki.
Pokażę tu przykład.
Kod:
#!usr/bin/perl
#Przyklad by VR8

use LWP::UserAgent;

head(); // Opisze później
if($ARGV[0]) {
attack($ARGV[0]);
} else {
usage();
}

sub attack() {
print "Atak startuje...";

$sqli = "; and union+select....";

LWP::UserAgent -> new;
LWP::UserAgent -> get($_[0].$sqli);

print "Zaatakowano cel.";
}
...

$ARGV to zmienna skalarna dla funkcji ARGV. ARGV może też być w postaci tablicy.

Gdy uruchamiamy program w perlu wpisujemy do CMD:
c:\program.pl;

ARGV to to co podamy po ścieżce programu.
c:\program.pl argv

ARGV może być nieskończenie dużo.

5. SUB

sub czyli odpowiednik function które jest używane w PHP, czy JS.

Funkcje którą wrzucamy do sub zakreślamy BISami czyli { }.
Początek {
Koniec }

No.

Kod:
#!usr/bin/perl

print "Hello ".$ARGV[0]; // ARGV 0 to tutaj nick który podałeś.
sub(5);

sub sub() {
Print "Program kończy pracę.";
exit(1);
}

6. Koniec

Mam nadzieję ze nauczyłeś się tu czegoś. Nie opisałem tutaj wielu funkcji, ale podstawy już znasz.
Narka ;)
 
Ostatnia edycja:

dodoxx6

Były Moderator
Dołączył
Luty 15, 2011
Posty
252
Jakoś bez rewelacji. Nie znam języka więc wypowiadam się jako potencjalny odbiorca. Popraw mnie jeśli się mylę.
1)
To co jest w niej zawarte musi być w
a) nawiasie
b) cudzysłowu
c) musi być oddzielone przecinkiem
b) cudzysłowu? Co jeśli wklejamy nie tekst a np. zmienną 'abc'?
2)Może przeoczyłem, ale tablica zaczyna się na pozycji [1] czy [0]?
3)Kompilatory, nawet jeśli ja wiem co i jak to czytać to może ktoś kto zupełnie nie wie.
4)Kurs zaczyna się od: może taki był plan ale nie wiem czy dobry ;).
5)
sub czyli odpowiednik function które jest używane w PHP, czy JS.
Wybacz, ale to żadne wytłumaczenie. Kierujesz tekst też do osób, które pierwszy raz stykają się z programowaniem.
6)A do ";" to czy faktycznie nie ma możliwości, że coś będzie działać? - to jest pytanie, nie retoryczne, takie zwykłe.
Pytam co do " musi kończyć się ";" ".
7)Opisy danych funkcji są raczej słabe. Może je jakoś rozbudować, osoba, która nic nie wie nie zrozumie a to nie jest dla innych osób poradnik. Przynajmniej ja mam takie odczucie, przerost formy (dla choć trochę znających się) nad treścią (dla raczej nowicjuszy) i to trochę wybrakowaną.
Sama przejrzystość tekstu jest dość kiepska.
8)Może go rozbudujesz?

Nie martw się, jak na pierwszy tekst tego typu nie jest źle. Popracujesz trochę, napiszesz jeszcze kilka i będzie lepiej.


To są moje prywatne odczucia, jeżeli ktoś ma inne rozumiem i zgadzam się, że się myliłem nie będę wdawał się w dyskusję!
 
Ostatnia edycja:

VR8

Moderator
Członek Załogi
Dołączył
Wrzesień 24, 2011
Posty
325
Co do ";". Bez tego będzie działać, ale czasami może źle zinterpretować kod.

Postaram się to od nowa napisać, bardziej zrozumiale i rozbudowanie.
 
Do góry Bottom