Ho mischiato la segnalazione di errori di battitura e di questioni tecniche.

Comunque mi pare un lavoro utile e fatto bene, visto che l'implementazione degli oggetti in Perl è potente, ma anomale ed ostica.

Complimenti.

cap 1 - prefazione
"si"

cap 2 - 2.1
evoluto si
ragruppamento
dettag li
ele mento
caratt eristiche
comples sa
indipendeti
struttu ra
impl ementazione

cap 2 - 2.2
na scondere
ac cesso

cap 2 - 2.3
ered itarietà
neces sità

cap 3
pa rametri
al difuori
mo dificato
un simil-codice

cap 4 - 4.2

meglio:
package Numeri;
$successione = [1,2,3,4,5,6,7];
bless ($successione, 'Numeri');

altrimenti non si capisce da dove viene 'Numeri'.

a pagina 12 scrivi:

"Come abbiamo detto in precedenza ogni metodo deve avere come primo parametro il nome della classe"
Ciò non mi risulta del tutto esatto, guarda i seguenti tre esempi di metodo:

codice:
sub inserisci {
	my $this = shift;
	my ($q) = shift;
	my @parametri = @{$_[0]} if (@_);
	$q =~ /INTO (\b\w+\b)/i;
	my $tab = $1;
	my $err = $this->{'error'};
	my $dbh = $this->{'dbh'};
	
	....
	return 1;
}
Qui il metodo riceve solamente l'affare benedetto, che in questo caso è un reference ad un hash e dei suoi parametri.

codice:
sub stampa_header {
	my $class = shift;
	my $this = shift;
	my $cgi = shift;
   print	$cgi->start_html( 
				-title => $this->{'titolo'},
            -bgcolor => $this->{'bgcolor'},
				-style => {-src => $this->{'css'}}
			);
}
qui il metodo riceve il nome della classe, l'affare benedetto e i suoi parametri. In questo caso è così perchè questo metodo NON viene chiamato direttamente, ma viene usato da una sotto classe (che eredita da quella) che lo utilizza così:

codice:
sub stampa {
	my $this = shift;
	
	$this->SUPER::stampa_header($this,$cgi);
	...
}
Infine vi sono metodi che non hanno bisogno di ricevere $this, ad esempio perchè privati:

codice:
my $connectDB = sub {
	my $set = shift; # NON si tratta di $this travestito, ma di suoi parametri.
	my $dbh;
	my $err = $set->{'error'}; 
	my $dsn = "DBI:$set->{'driver'}:database=$set->{'database'};host=$set->{'host'}";
	$dbh = DBI->connect($dsn, "$set->{'userid'}", "$set->{'passwd'}", $set->{'options'}) || 
        $err->errore('db','Non è stato possibile 
        connettersi al database',$DBI::errstr,$dbh,
        'Tentativo di connessione al database');
	return $dbh;
};
Comunque quanto sopra lo spieghi meglio, dopo, quando parli dei metodi, ma è opportuno non avere contraddizioni.

Alla fine del capitolo 6 è meglio aggiungere che per motivi di sicurezza quello che suggerivi è da NON FARE MAI.