summaryrefslogtreecommitdiff
path: root/doc/it/pm-gawk.1
blob: 5e40f1d329b26d47bd3140caaaa77f41687aa042 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
.ds EP \fIGAWK: Programmare efficacemente in AWK\fP
.\"Traduzione per la versione gawk-5.2.0 di A.G. Colombo - 12 Agosto 2022
.\"Aggiornamento per la versione gawk-5.2.0 di A.G. Colombo - 14 Agosto 2022
.ds PM \fIManuale utente funzionalità Memoria Persistente in gawk\fP
.TH PM-GAWK 1 "17 novembre 2022" "Free Software Foundation" "Comandi di utilità"
.SH NOME
gawk con memoria persistente \- dati e funzioni persistenti
.SH SINTASSI
.ft CW
.nf
truncate -s \f(CIdimensione\fP deposito.pma
export GAWK_PERSIST_FILE=deposito.pma
gawk .\^.\^.
.sp
truncate -s \f(CIdimensione\fP deposito.pma
GAWK_PERSIST_FILE=deposito.pma gawk .\^.\^.
.sp
truncate -s \f(CIdimensione\fP deposito.pma
alias pm='GAWK_PERSIST_FILE=deposito.pma'
pm gawk .\^.\^.                       # forma concisa
.sp
unset GAWK_PERSIST_FILE   # disabilitare persistenza
.sp
export GAWK_PERSIST_FILE=altro_deposito.pma  # modificare deposito
.sp
rm deposito.pma               # cancellare deposito
.fi
.ft R
.SH DESCRIZIONE
.PP
.I Gawk
a partire dalla versione 5.2 supporta la funzionalità
"memoria persistente", che permette di immagazzinare
in un file variabili e funzioni definite in uno script
.I Gawk
per essere utilizzate in successive esecuzioni di
.I Gawk .
La funzionalità, chiamata
.IR pm-gawk ,
è descritta in \*(EP e in \*(PM.
.PP
.I pm-gawk
è attivato passando a
.I gawk
il nome di un
.IR "file-deposito" ,
inizialmente vuoto (tutto a zeri binari)
attraverso la variabile di ambiente
\f(CWGAWK_PERSIST_FILE\fP.
.I pm-gawk
conserva in tale file-deposito le variabili e le funzioni definite in uno script
.I Gawk
per utilizzo in successive esecuzioni di
.I gawk.
.PP
.I pm-gawk
offre almeno due vantaggi, rispetto all'esistente estensione
\f(CWrwarray\fP: offre accesso permanente (``O(1) time'') a singoli
elementi di vettori associativi persistenti, e può immagazzinare
funzioni definite in uno script
.I gawk
oltre alle variabili di cui sopra.
.SH ESEMPI
.PP
Dimostrazione della persistenza di variabili:
.sp .5
.RS
.nf
.ft CW
$ \f(CBtruncate -s 1G deposito.pma\fP            # creazione file-deposito
$ \f(CBexport GAWK_PERSIST_FILE=deposito.pma\fP  # definizione variabile d'ambiente
$ \f(CBgawk 'BEGIN{ print ++i }'\fP
1
$ \f(CBgawk 'BEGIN{ print ++i }'\fP
2
$ \f(CBgawk 'BEGIN{ print ++i }'\fP
3
.ft R
.fi
.RE
.PP
Per passare la variabile d'ambiente a livello di singolo comando:
.sp .5
.RS
.nf
.ft CW
$ \f(CBunset GAWK_PERSIST_FILE\fP
$ \f(CBGAWK_PERSIST_FILE=deposito.pma gawk 'BEGIN{ print ++i }'\fP
4
$ \f(CBGAWK_PERSIST_FILE=deposito.pma gawk 'BEGIN{ print ++i }'\fP
5
$ \f(CBGAWK_PERSIST_FILE=deposito.pma gawk 'BEGIN{ print ++i }'\fP
6
.ft R
.fi
.RE
.PP
Per ridurre l'ingombro legato al passare la variabile d'ambiente
a livello di ogni singolo comando si può definire un alias:
.sp .5
.RS
.nf
.ft CW
$ \f(CBalias pm='GAWK_PERSIST_FILE=deposito.pma'\fP
$ \f(CBpm gawk 'BEGIN{ print ++i }'\fP
7
$ \f(CBpm gawk 'BEGIN{ print ++i }'\fP
8
.ft R
.fi
.RE
.PP
Per evitare di attivare la persistenza:
.sp .5
.RS
.nf
.ft CW
$ \f(CBunset GAWK_PERSIST_FILE\fP
$ \f(CBgawk 'BEGIN{ print ++i }'\fP
1
$ \f(CBgawk 'BEGIN{ print ++i }'\fP
1
.ft R
.fi
.RE
.PP
Per ``dimenticare'' definitivamente i contenuti del file-deposito:
.sp .5
.RS
.nf
.ft CW
$ \f(CBrm deposito.pma\fP
.ft R
.fi
.RE
.PP
.SH VARIABILI D'AMBIENTE
.PP
\f(CWGAWK_PERSIST_FILE\fP contiene il nome di un file-deposito dove
sono immagazzinate le variabili e le funzioni definite in uno script.
Se tale variabile d'ambiente non è visibile a
.IR gawk ,
la funzionalità "memoria persistente"
non è attivata e
.I gawk
si comporta in maniera tradizionale.
.SH INFORMAZIONE SULLA VERSIONE
.PP
La funzionalità "memoria persistente"
.I gawk
è stata resa disponibile nella versione
.I gawk
5.2.
.SH AUTORI
Arnold Robbins, il manutentore di
.IR gawk ,
ha implementato
.I pm-gawk
usando un allocatore di memoria persistente
(Persistent Memory Allocator - pma) fornito da
Terence Kelly.  Una versione precedente, prototipica,
di
.I gawk
con memoria persistente è stata sviluppata da
Haris Volos, Zi Fan Tan e Jianan Li
a partire da una diramazione della distribuzione sorgente di
.I gawk .
.SH AVVERTIMENTI
Il filesysten CIFS in ambiente GNU/Linux crea dei problemi
all'allocatore di memoria persistente. Evitare quindi di
usare un file di appoggio che risieda su un tale filesystem con
.IR pm-gawk .
.SH SEGNALAZIONE DI ERRORI
Seguire le procedure descritte in \*(EP e in \*(PM.
Se si ritiene che gli errori siano legati alla
"memoria persistente" (e non ad altri errori
.I gawk
non correlati alla "memoria persistente") siete pregati di
spedire un messaggio e-mail a
Terence Kelly a uno o più dei seguenti indirizzi:
\f(CWtpkelly@acm.org\fP,
\f(CWtpkelly@eecs.umich.edu\fP,
o
\f(CWtpkelly@cs.princeton.edu\fP.
.SH VEDERE ANCHE
.IR gawk (1),
\*(EP,
e
\*(PM.
I due manuali dovrebbero essere disponibili in formato Info,
se il comando Info è installato nel vostro sistema.
.PP
Vedere \f(CWhttps://web.eecs.umich.edu/~tpkelly/pma/\fP per
l'ultima versione del codice sorgente e del manuale.
.SH PERMESSI DI COPIA
Copyright \(co 2022
Terence Kelly.
.PP
È permesso stampare e distribuire copie letterali di questa pagina
di manuale, a patto che il copyright e questa nota di autorizzazione
siano conservate e presenti in ogni copia.
.ig
È permesso elaborare questo file con il programma troff e stampare il
risultato, a patto che il documento stampato contenga una sezione
identica a questa sui permessi di ristampa, tranne che per la rimozione di
questo paragrafo (in quanto non rilevante per la pagina stampata).
..
.PP
È permesso copiare e distribuire versioni modificate di questa
pagina del manuale, sotto le condizioni poste per la copia letterale,
a patto che l'intero lavoro derivato sia distribuito secondo permessi
di stampa identici a questi.
.PP
È permesso copiare e distribuire traduzioni di questa pagina di
manuale in un'altra lingua, sotto le condizioni poste sopra per le
versioni modificate, salvo che quest'informazione sui
permessi di copia e ristampa deve essere espressa in una traduzione
approvata dalla Free Software Foundation.