Vyhledání a nahrazení

[vyraz=~][m]/vzor/[g][i][o]
Ve výrazu (implicitně $_) se hledá vzor. Při uvedení m je možné volit oddělovač.
Volby: g - globálně, i- caseinsenzitive,
o - provádí 1x interpolace proměnných.
[$VAR=~]s/vzor/nahrada/[g][i][e][o]
hledá vzor a nahradí je nahradou, vrací počet provedených substitucí.
Volby: g - všechny výskyty, e - náhradu chápe jako výraz,
i,o - stejný význam jako u vyhledání.
[$VAR=~]tr/seznam1/seznam2/[c][d][s]
nahradí všechny výskyty znaků v seznamu1 odpovídajícími znaky v seznamu2. Vrací počet nahrazených znaků.
Volby:
c - komplementární volby,
d - zruší všechny znaky, které nejsou v seznamu1
s - stejné po sobě jdoucí znaky ze seznamu1 nahradí jedním znakem ze seznamu2

Spolupráce se systémem

alarm(vyraz)Po počtu sekund daných výrazem bude vydán signál SIGALRM
chdir[(vyraz)]změní pracovní adresář, při vynechání výrazu změní adresář na $ENV{"HOME"}
chroot(jmenosoub)Změní root adresář pro proces ajeho potomky
die[(seznam)]Tiskne seznam na STDERR a ukončí běh s aktuální hodnotou proměnné $!
exec(seznam)Spustí příkazy systému uvedené v seznamu a skript ukončí.
exit(vyraz)Ukončí skript s hodnotou výrazu.
forkProvede systémové volání fork(2)
getloginVrací aktuální login jméno procesu.
getpgrp[(pid)]Vrací číslo skupiny procesů procesu s PID.
getppidVrací ID rodičovského procesu.
getpriority(WHICH,WHO)Vrací aktuální prioritu procesu, skupinu procesu nebo uživatele.
kill(seznam)Pošle signál procesům v seznamu. První prvek v seznamu je signál (číslo nebo jméno).
setpgrp(PID,PGRP)Zařadí proces PID do skupiny procesů.
setpriority(WHICH,WHO,PRIO)Nastaví aktuální prioritu procesu, číslo skupiny procesů nebo uživatele.
sleep[(vyraz)]Uspí proces na počet sekund daných výrazem. Bez parametru vrací počet sekund, po které je proces uspán.
syscall(seznam)Volání systémových volání, volání je první prvek seznamu, další prvky jsou předávané argumenty.
system(seznam)Spustí příkazy systému uvedené v seznamu tak, že provede fork a rodičovský proces čeká na ukončení potomka.
timesVrací čtyřprvkové pole ($user, $system, $cuser, $csystem).
umask[(vyraz)]Nastaví umask pro proces a vrací starý. Bez parametru vrací aktuální umask.
waitČeká na ukončení potomka a vrací pid ukončeného procesu.
warn(seznam)Tiskne zprávu na STDERR jako die, ale neukončuje script.

Různé

caller[(vyraz)]vrací pole ($package,$file,$line,...) pro dané volání procedury
caller vrací informace pro aktuální proceduru
caller(1) pro tu, ze které byla procedura volaná, atd.
local(seznam)vytvoří lokální pole pro blok, proceduru nebo eval, které obsahuje hodnoty proměnných v seznamu.
require(vyraz)začlení do scriptu uvedený soubor z knihovny.
scalar(vyraz)Vyhodnotí výray ve skalárním kontextu.
sub jmeno {vyraz;..}definuje proceduru, parametry jsou předávány v poli @_
wantarrayVrací true, pokud aktuální kontext očekává pole

Formát

format [JMENO] =
definice
.

definice popisuje vzhled řádek a obsahuje proměnné, jejichž hodnoty doplní do polí řádků.
Typy polí jsou:
@<<<... vlevo zarovnané pole
@>>>... vpravo zarovnané pole
@||| centrované pole
@#.## numeriký formát s desetinou tečkou
@* víceřádkové pole
Délka pole je počet znaků včetně znaku @. Pro víceřádkový blok použijte znak ^ místo znaku @.
Znak ~ použijte, pokud nechcete tisknou řádku, které je prázdná.
Znaky ~~ použijte na začátku řádky, chcete-li řádek opakovat pro všechny pole.
Nastavením proměnné $- na nulu si vynutíte konec stránky.
Prohlédněte si i speciální proměnné $^,$~,$- a $=

Regulární výrazy

Speciální znaky:
. libovolný znak, kromě znaku nový řádek.
+ alespoň jeden výskyt předchozího znaku.
? žádný nebo jeden výskyt předchozího znaku.
* žádný nebo více výskytů předchozího znaku.
[...] skupina znaků, vyhovat musí právě jeden.
[^...] všechny znaky kromě uvedených v závorkách.
{N,M} minimálně N krát a maximálně M krát opakování znaků.
(...) skupina znaků později použitelná jako jeden prvek (proměnná nebo \1 - \9).
(..|..|..) jedna z alternativ.
\d tj. [0-9] \D tj. [^0-9]
\w tj. [a-zA-Z0-9_] \W tj. [^a-zA-Z0-9_]
\s tj. [ \r\t\n\f] (mezera,CR,tabelátor,LF,) \S tj. [^ \r\t\n\f]
\1 - \9řetězec dříve nalezený uzavřený v ().
\b hranice slova \B není hranice slova
^ začátek řetězce
$ konec řetězce
\n,\r,\f,\t mají svůj obvyklý význam