Le cosiddette "builtin functions" sono i normali 'comandi' del perl, che accettano argomenti, fanno qualcosa a livello degli argomenti o di sistema, e danno in ritorno dei valori. Per informazioni più dettagliate, si veda "man perlfunc".
Molte funzioni non hanno bisogno di argomenti tra (), ma nelle operazioni più complicate le parentesi tonde sono necessarie per chiarire cosa è riferito a cosa. Tipicamente, quindi, le () si evitano nelle linee più semplici, come print $bleah; , ma devono essere incluse quando c'è più di una funzione che viene invocata nella stessa dichiarazione.
Le dichiarazioni in perl terminano sempre con il segno ;
Funzioni (in ordine alfabetico):
- atan2
- binmode
binmode FILE; - chdir
- chmod
Il valore di uscita è false se è 0 o '', true in qualsiasi altro caso:chmod 0644, "README", "INSTALL";
@list = ( "abc", "def", "ghi")
chmod 755, @list; - chop
$b = chop($a);Nella maggior parte dei casi, non ci interessa il valore restituito, quindi basta semplicemente dare:
chop $a;
oppure solamente:
chop;
che opera con $_ . Si noti che, ai nostri fini, chomp è equivalente a chop.
- chown
oppure
chown $uid, $gid, 'file1', 'file2' ...... ;
- cos
- do
Un'utile implementazione di "do" può essere quella di ripetere una porzione dicodice finchè una certa condizione sia verificata. Vediamo come:
do {
print "Scegli 1 o 2n";
chop($sel=<StdIN>);
until " 1 2 " =~ / $sel /;
if ($sel == '1') {
print "Hai scelto 1n";
} elsif ($sel == '2') {
print "Hai scelto 2n";
}In pratica, questo script visualizza "hai scelto 1" o "hai scelto 2" a seconda del tasto premuto dall'utente, a meno che questi abbia premuto qualsiasi altro tasto: in questo caso, lo script si disinteressa del tasto premuto e continua a visualizzare "Scegli 1 o 2". A cosa può servire tutto questo? Semplice: togliete da questo script le prime quattro linee e premete "3" quando vi viene chiesto di scegliere 1 o 2: lo script si blocca ed esce: non succede niente di male, sia chiaro, ma se avete uno script di qualche centinaio di righe che si blocca per una simile piccolezza, la cosa può dare fastidio.
- die
die "Non è 18n";
} - eval
eval `cat script.pl`;
Attenzione agli apici inversi: ' questo è un apostrofo ` questo è l'apice inverso
- exec
- exit
per uscire con successo
exit 1; o qualsiasi valore diverso da 0
esce senza successo.
La differenza con die è che die viene utilizzato nei casi tipo "questo non sarebbe dovuto succedere".
- exp
- getpgrp
- goto
- grep
- join
$bah diventa "eek:niente:34"@array = ("uff", "abc", "foo");
print (join(" ", @array, "eek"), "n");
visualizza "uff abc foo eek" - keys
$bla{'uff'} = "erp";
@thekeys = keys(%bla);
@thekeys è ("eek", "uff")
print (join(" ", keys(%bla)), "n";);
visualizza "eek uff" - kill
- last
last LINE if /^$/;
esce quando ha terminato con gli headers
.......
il resto del ciclo
} - lenght
$l = $lenght($n);
$l è 4print (lenght(34), "n");
restituisce 2 - link
- local
dichiara $variabile localelocal (@array, %hash);
dichiara la lista di variabili localilocal $var = "valore";
dichiara $var locale e le assegna un valorePer una trattazione più completa, si veda la sezione 'Temporary Values via local()' in man perlsub.
- log
- mkdir
o meglio:
if (!mkdir("files", 0755)) {
die "failed to create directoryn";
} - my
- next
next LINE if /^#/;
altro
} - oct
- open
- con <
- con >>
- con >>
- con + < >
- se inizia con |
- se termina con |
Apre il fileopen log >> /tmp/log
Apre il file log e ne passa il contenuto a /tmp/log, senza sovrascriverloopen <file;
Apre il file per la modificaopen(FILE, "<miofile;");
Come sopra, solo che poi sarà possibile agire su FILE - pop
- print
quante volte vedrete questo esempio!$bla = 3
print "Il valore di 'bla' è $blan";
visualizza "il risultato di 'bla è 3" - push
$arr = "xterm";
push(@bla, "eek", $arr, 12.5)
@bla risulta ( "a","eek", $arr, 12.5); - quotemeta
rand
- readlink
- rename
- rmdir rmdir "temp_dir";
- shift
$v = shift @bla;
# @bla è ("xterm", 12.5) e $v è "a" - sin
- sleep
- split
- sqrt
- symlink
Nei sistemi che non prevedono i link simbolici, la funzione uscirà con un errore. In questo caso si veda la funzione link().
- system
- undef
si sbarazza dell'hash %blaundef $eek;
si sbarazza dello scalare $eek$eek = undef;
come sopra - unlink
unlink "tempfile", "altrifile"; - unshift
$arr = "xterm";
unshift(@bla, "eek", $arr, 12.5); # @bla è ("eek", "xterm", 12.5, - warn
- <>
legge una linea in $_chop;
esegue chop su nprint "Hai scritto '$_'n";
visualizza l'output, ovvero quello che si è digitato preceduto da "Hai scritto"