Su OSX "Mavericks", questo:
package FOO;
use Moose;
use MooseX::ClassAttribute;
class_has "BAR" => ( is => "rw" );
... controlla clean per "perl -c":
Sintassi FOO.pm OK
... ma dà questo errore se lo eseguo semplicemente con "perl FOO.pm":
Numero dispari di elementi nell'assegnazione hash a/System/Library/Perl/Extras/5.16/MooseX/ClassAttribute.pm linea 37. Non è possibile utilizzare la stringa ("file") come riferimento HASH mentre "riferimenti rigorosi" sono in uso su /Library/Perl/5.16/darwin-thread-multi-2level/Moose/Meta/Attribute.pm linea 71.
Ho provato in ogni modo possibile per capire cosa fossesta succedendo qui, ma sono "sconcertato. C'è qualcos'altro che devo" usare "o dichiarare per primo? (Questo è il più piccolo caso di test che posso trovare, ma l'errore si verifica ogni volta che uso class_has () in un modulo .)
risposte:
1 per risposta № 1Quando ricevi strani errori da un modulo che usa Moose, la prima cosa da fare è eseguire il moose-outdated
script dalla riga di comando. Probabilmente hai un modulo MooseX obsoleto che non è compatibile con la versione installata di MooseX.
Dovresti correre moose-outdated
ogni volta che aggiorni Moose, ma è facile da dimenticare, specialmente quando Moose è stato aggiornato perché è una delle dipendenze di qualche altro modulo che stai installando.