Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

alcune funzioni

Tutte le funzioni in ordine alfabetico del Perl
Tutte le funzioni in ordine alfabetico del Perl
Link copiato negli appunti

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 Funzione matematica: restituisce l'arcotangente di un valore. La si può anche trovare con

    sub tan { sin($_[0]) / cos($_[0]) }

  • binmode Apre un file in modalità binaria; deve essere invocato dopo il comando open (che apre il file):

    open (FILE, file.bin);
    binmode FILE;

  • chdir Cambia la directory di lavoro con quella indicata come argomento della funzione

    chdir ($HOME) or die "You're homeless!n";

  • chmod Accetta come argomenti un numero e una lista di file, e setta il permesso su quei file in funzione del numero assegnato. Il numero deve essere espresso in notazione ottale.
    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 Prende come argomento uno scalare, ed elimina l'ultimo carattere, restituendolo. Spesso è utilizzato per eliminare il carattere n dai file e dagli input da tastiera.

    $a = "scalare";
    $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 Analogo al comando chown dei sistemi Unix: cambia il proprietario di uno o più file. I primi 2 argomenti che si devono passare a questa funzione sono l'uid (user id) ed il gid (group id) numerici, poi il file o i file da sottoporre alla funzione. In generale, la sintassi è:

    chown $uid, $gid, @filenames;

    oppure

    chown $uid, $gid, 'file1', 'file2' ...... ;

  • cos Funzione matematica. Restituisce il coseno del parametro (espresso in radianti) passato alla funzione. Se si omette il parametro, cos opera su $_
  • do Esegue un blocco di comandi e restituisce il valore dell'ultima espressione presa in considerazione. La sintassi è:

    do BLOCCO;

    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 Prende come argomento una stringa ed esce immediatamente dal programma visualizzando tale stringa come messaggio d'errore.

    if ($num != 18) {
    die "Non è 18n";
    }

  • eval Prende un'espressione come argomento e la esegue come fosse un piccolo programma. Se non viene indicato alcu argomento, eval valuta $_ . Eval restituisce il valore dell'ultima espressione considerata, ma si può ricorrere a return per restituire il valore ad un determinato punto del blocco. Nel seguente esempio si vede come è possibile eseguire la stessa operazione con do e con eval:

    do 'script.pl';

    eval `cat script.pl`;

    Attenzione agli apici inversi: ' questo è un apostrofo ` questo è l'apice inverso

  • exec Esce dallo script Perl eseguendo un altro progrmamma. Normalmente, exec non rientra in perl, ma se anche dovesse farlo, restituisce il valore falso, controllando cos'è successo tramite l'analisi di $! . Se si volesse ritornare all'interno dello script, è consigliato utilizzare la funzione system
  • exit Prende un numero come argomento, ed esce con quel numero come codice di stato.

    exit 0;

    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 Funzione matematica. Calcola il valore di e elevato al parametro fornito con exp: in mancanza di questo, agisce su $_
  • getpgrp Utilizzato con la sintassi 'getpgrp PID' restituisce i/l processo/i appartenente/i al PID specificato. Se si utilizza questa funzione su sistemi che non implementano la chiamata getgpgrp (si veda man getpgrp), produce un errore irreversibile.
  • goto Sintassi: goto label: ricerca la riga contrassegnata da label e riprende l'esecuzione da essa. La sintassi può anche essere goto expr oppure goto & name (si veda la manpage per ulteriori approfondimenti)
  • grep Esegue la stessa cosa del comando 'grep' nei sistemi Unix. In pratica, ricerca una stringa e restituisce gli elementi per i quali l'espressione risulta vera. Si veda la solita man perlfunc e man perl (nei sistemi Unix)
  • join Prende una stringa ed una lista di valori di uno o più array, e produce una stringa ottenuta con tutti i valori dell'array, usando la stringa come separatore.

    $bah = (":", "eek", "niente", 34);
    $bah diventa "eek:niente:34"

    @array = ("uff", "abc", "foo");

    print (join(" ", @array, "eek"), "n");
    visualizza "uff abc foo eek"

  • keys Restituisce una lista costituita da tutte le chiavi dell'hash indicato:

    $bla{'eek'} = "*pat*";
    $bla{'uff'} = "erp";
    @thekeys = keys(%bla);
    @thekeys è ("eek", "uff")
    print (join(" ", keys(%bla)), "n";);
    visualizza "eek uff"

  • kill Invia un segnale ad un processo. La si può utilizzare come kill 'STOP' processo; per i segnali, is veda man 7 signal.
  • last interrompe l'esecuzione il ciclo in questione (simile al BREAK del C). Se non viene specificato il ciclo, last is riferisce al più interno.

    LINE: while <StdIN> {
    last LINE if /^$/;
    esce quando ha terminato con gli headers
    .......
    il resto del ciclo
    }

  • lenght Prende una stringa e restituisce la sua lunghezza

    $n = "blip";

    $l = $lenght($n);
    $l è 4

    print (lenght(34), "n");
    restituisce 2

  • link Crea un link al file specificato, con la sintassi uguale a quella dei sistemi Unix:

    link OLDFILE, NEWFILE

  • local Modifica le variabili elencate in modo da diventare locali limitatamente al blocco corrente. Se in lista ci sono più variabili, queste devono essere racchiuse tra parentesi. In alternativa a local, si può utilizzare anche my.

    local $variabile;
    dichiara $variabile locale

    local (@array, %hash);
    dichiara la lista di variabili locali

    local $var = "valore";
    dichiara $var locale e le assegna un valore

    Per una trattazione più completa, si veda la sezione 'Temporary Values via local()' in man perlsub.

  • log Funzione matematica: restituisce il logaritmo in base e dell'argomento passato alla funzione (o, come sempre, agisce su $_ )
  • mkdir Crea una directory, di cui il primo elemento è il nome, il secondo i permessi su di essa:

    mkdir "files", 0755;

    o meglio:

    if (!mkdir("files", 0755)) {
    die "failed to create directoryn";
    }

  • my Dichiara che le variabili considerate sono locali rispetto al blocco che le contiene, alla subroutine o al file corrente; se vengno specificate più variabili, queste devono essere racchiuse tra parentesi. A differenza delle variabili create con 'local', queste rendono completamente 'invisibili' le variabili globali con lo stesso nome. Per informazioni più dettagliate, si veda Private Variables via my() in man perlsub
  • next Analogo all'istruzione CONTINUE del C, permette di passare direttamente l'interazione del ciclo contrassegnata da dall'etichetta LABEL

    LINE: while (<StdIN>) {
    next LINE if /^#/;
    altro
    }

  • oct Interpreta l'argomento passato come parametro della funzione come un valore ottale e lo restituisce in valore decimale
  • open Apre il file indicato come argomento della funzione. Il file può essere aperto in diversi modi:
  • con < viene aperto in lettura
  • con >> viene aperto in scrittura
  • con >> il contenuto non viene sovrascritto, ma i nuovi dati vengono aggiunti in coda al file
  • con + davanti a < o > per indicare che il file deve essere aperto in lettura e scrittura
  • se inizia con | , viene visto come un comando a cui l'output viene passato
  • se termina con | , viene visto come un comando da cui viene prelevato l'input

    open /usr/src/linux/README
    Apre il file

    open log >> /tmp/log
    Apre il file log e ne passa il contenuto a /tmp/log, senza sovrascriverlo

    open <file;
    Apre il file per la modifica

    open(FILE, "<miofile;");
    Come sopra, solo che poi sarà possibile agire su FILE

  • pop Estrae e restituisce l'ultimo valore di un array riducendone di 1 le dimensioni. Se l'array è vuoto, restituisce ''
  • print Stampa una stringa o una lista di stringhe. Restituisce 1 se eseguito con successo, 0 altrimenti

    print "Hello worldn";
    quante volte vedrete questo esempio!

    $bla = 3
    print "Il valore di 'bla' è $blan";
    visualizza "il risultato di 'bla è 3"

  • push Aggiunge uno o più elementi in coda all'array ampliandone la lunghezza

    @bla = ("a");

    $arr = "xterm";

    push(@bla, "eek", $arr, 12.5)
    @bla risulta ( "a","eek", $arr, 12.5);

  • quotemeta Restituisce una variante dell'argomentoin cui gli eventuali metacaratteri sono resi con l'aggiunta del carattere backslash ( )

    quotemeta ".*" restituisce ".*"

    rand La funzione random. Passando un argomento numerico alla funzione, questa restituirà un valore casuale compreso tra 0 e il numero indicato. Se non è fornito alcun argomento, restituirà un valore compreso tra 0 e 1, estremi inclusi

  • readlink Passandogli un link come argomento, la funzione restituisce il nome del file ( o directory) a cui quel file punta
  • rename Rinomina un file: restituisce 1 se l'operazione è stata svolta con successo, 0 in caso contrario
  • rmdir Rimuove la directory indicata come argomento della funzione

    rmdir "temp_dir";

  • shift Estrae il primo valore dell'array e lo restituisce, accorciando di 1 la lunghezza dell'array e facendo slittare i restanti elementi. In un certo senso, è l'opposto di push. Se l'array è vuoto, lo lascia vuoto e restituisce un valore "undef".

    @bla = ("a", "xterm", 12.5);
    $v = shift @bla;
    # @bla è ("xterm", 12.5) e $v è "a"

  • sin Funzione matematica: restituisce il seno di un determinato valore
  • sleep Aspetta il numero di secondi indicati come argomento della funzione.
  • split Cerca particolari sequenze di caratteri e scompone la stringa in una serie di sottostringhe, restituendo la lista generata (in contesto scalare) o il numero di sottostringhe generate. Verrà meglio spiegato più avanti, dopo le spiegazioni sulle espressioni regolari.
  • sqrt Funzione matematica: calcola la radice quadrata.
  • symlink Crea un link simbolico. La sintassi è:

    symlink OLDFILE, NEWFILE

    Nei sistemi che non prevedono i link simbolici, la funzione uscirà con un errore. In questo caso si veda la funzione link().

  • system Esegue un programma. E' simile a exec, ma dopo la fine dell'esecuzione del programma ritorna invece di uscire.

    system ("comando", "istruzioni")

  • undef Prende il nome di una variabile e la imposta come indefinita. Senza argomenti, restituisce un valore indefinito. Undef non restituisce mai '' o 0.

    undef %bla;
    si sbarazza dell'hash %bla

    undef $eek;
    si sbarazza dello scalare $eek

    $eek = undef;
    come sopra

  • unlink Cancella un file o una lista di file.

    unlink "tempfile";
    unlink "tempfile", "altrifile";

  • unshift Aggiunge una lista di elementi in testa all'array e restituisce il numero di elementi.

    @bla = ("a", "b");
    $arr = "xterm";
    unshift(@bla, "eek", $arr, 12.5); # @bla è ("eek", "xterm", 12.5,

  • warn Emette un 'warning' nel canale StdERR, come fa die ma senza uscire.

    warn "debugger enebled" if $debug;

  • <> Legge una riga da StdIN e la restituisce.

    $_ = <>;
    legge una linea in $_

    chop;
    esegue chop su n

    print "Hai scritto '$_'n";
    visualizza l'output, ovvero quello che si è digitato preceduto da "Hai scritto"

Ti consigliamo anche