# Neblogas failas, kurį radau VU MIF puslapyje # #!/usr/bin/perl -w use strict; # Komentaras print "Hello, world!\n"; # Kintamieji my $a; # paprastas kintamasis (skaičius, simbolių eilutė) my @a; # masyvas my %a; # hash'as ("asociatyvus masyvas") $a = 1 + "2"; # rezultatas = 3 $a = 1 . "2"; # rezultatas = "12" # Klaidingos reikšmės: 0, 0.0, "0", "" # Teisingos reikšmės: visos kitos (pvz, "0 but true") print +(0.0 ? "true" : "false"), "\n"; # Perl moto: TIMTOWTDI -- There Is More Than One Way To Do It # IF my $salyga = 1; if ($salyga) { print "Taip!\n" } else { print "Ne!\n" } unless ($salyga) { # == if (!$salyga) print "Ne!\n" } else { print "Taip!\n" } print "Labas\n" if $salyga; print "Rytas\n" unless $salyga; do { daug; sakiniu; } if $salyga; $salyga or print "neteisinga"; $salyga || print "neteisinga"; $salyga and "teisinga"; # die "Ai!"; open F, "mano geras failas.txt" # atidarymas skaitymui or die "Neradau!!! Klaida: $!\n"; # $! -- (beveik) pilnas klaidos pranešimas, pvz, "file not found" ar "no # permissions". open F, "> mano geras failas.txt" # atidarymas rašymui or die "Negaliu sukurti!!! Klaida: $!\n"; open F, ">> mano geras failas.txt" # atidarymas papildymui or die "Negaliu appendinti!! Klaida: $!\n"; open F, "| sort | lpr" # išrūšiuosim ir išspausdinsim or die "Negaliu paleisti sort!! Klaida: $!\n"; open F, "gzip < failas.gz |" # išzipuosim ir perskaitysim or die "Negaliu paleisti gzip!! Klaida: $!\n"; # funkcija param1, param2, ... ; # arba # funkcija(param1, param2, ...); ### # Masyvai ### my @a = (1, 2, 3, "labas"); # @a -- visas masyvas # $a[0], $a[1], ... - masyvo elementai # Nors ir $a[...], bet neturi nieko bendro su skaliaru $a !!! $a[1] = 2.5; # Hash'ai -- kaip ir masyvai, bet indeksas gali būti bet koks skaliaras my %a; $a{"Jonas"} = 1; $a{Petras} = 2; # Bus kabutės, ar nebus -- jokio skirtumo $a{123} = "cha cha cha"; # Inicializacija: my %a = ("Jonas" => 1, Petras => 2, 123 => "cha cha cha"); # Nėra absoliučiai jokio skirtumo tarp => ir , A, na yra mažuuuutis skirtumukas # ---------------------------------------------------------------------- # Ciklas 'for': for (inicializacija; sąlyga; padidinimas) { sakiniai } for my $kintamasis (@masyvas) { ... } Sutrumpintas užrašas: sakinys for @masyvas; # ciklo kintamasis bus $_ Pvz: print "$_\n" for @a; print $_ * 15, " " for 1..10; # automatiškai sukuriamas "masyvas" (1, ..., 10) ... for 'a'..'z'; # gal bus aiškiau ;) # Ciklas `while' while ($salyga) { ... } until ($salyga) { ... } ... while $salyga; ... until $salyga; # Skaitymas iš failo open F, "vardas" or die "$!"; while (my $eilute = ) { # kiekviena $eilute baigiasi \n'u. Jei tai trukdo, chomp'inam: my $newline = chomp($eilute); ... } print while (); # Funkcija sub mano_grazi_funkcija($$@) # trys parametrai: du skaliarai ir masyvas { my ($par1, $par2, $par3) = @_; # va ir parametrai # Galima juos būtų pasiekti ir per $_[0], $_[1] ... bet negražu. # $par3, jei nemaišau, bus pointeris ("referencas") į masyvą... ... # Galima ir taip: my $par1 = shift; my $par2 = shift; ... my @mas = @{$par3}; print $par3->[0], ... return $par1 + $par2; } # REGEXPAI!!!! if ($eilute =~ /$regexpas/) { ...taip... } if ($eilute !~ /$regexpas/) { ...ne... } if ($eilute =~ /^[0-9a-f]*$/) { ... } s/^([^ ]*) *([^ ]*)/$2 $1/; # swap first two words if (/(.)\1/) { # find first doubled char print "'$1' is the first doubled character\n"; } if (/Time: (..):(..):(..)/) { # parse out values $hours = $1; $minutes = $2; $seconds = $3; } $eilute =~ s/senas-tekstas/naujas-tekstas/g; $eilute =~ s/([aA][a-zA-Z]+)/\U$1/g; # užrašys visus žodžius prasidedančius `a' # didžiosiomis raidėmis ($failas_be_katalogu = $failas) =~ s|^.*/||; $eilute =~ tr/A-Za-z/N-ZA-Mn-za-m/; # ROT-13 "encryption"as $kiek_buvo_CRu = ($eilute =~ tr/\015//d); # Išmetam CR'us. # Skaičių palyginimas: == > < != >= <= # Simbolių eilučių palyginimas: eq lt gt ne ge le