Sto scrivendo del codice dove sto usando una subroutine come sia un lvalue che un valore rvalore per leggere e scrivere valori di database. Il problema è che voglio reagire in modo diverso in base al fatto che venga usato come un lvalue o un valore.Verificare se una subroutine viene utilizzata come lvalue o un valore in Perl
Desidero che la subroutine scriva nel database quando viene utilizzata come un lvalue e letta dal database quando viene utilizzata come valore di rvalue.
Esempio:
# Write some data
$database->record_name($subscript) = $value;
# Read some data
my $value = $database->record_name($subscript);
L'unico modo che posso pensare di fare questo lavoro è di trovare un modo per il subroutine per riconoscere se viene utilizzato come valore assegnabile o rvalue e reagiscono in modo diverso per ciascun Astuccio.
C'è un modo per farlo?
Sono d'accordo, ma sto cercando di rispecchiare la funzionalità di un'API simile usata in Python per l'accesso al database e sembra semplicemente più pulito da una prospettiva UI usando una subroutine lvalue. – tjwrona1992
C'è [MooseX :: LvalueAttribute] (https://metacpan.org/pod/MooseX::LvalueAttribute) se usi Moose. – ThisSuitIsBlackNot
Nonostante l'idea di fantasia e le soluzioni di seguito, devo dire che sono d'accordo con [ysth] (http://stackoverflow.com/a/35184272/622310) che suggerisce di chiamare semplicemente '$ database-> record_name ($ subscript, $ value) 'per scrivere nel database. Quindi tutta la subroutine deve fare è verificare l'esistenza del secondo parametro. Qualunque cosa più elaborata di quella e creerai un codice che nessun altro comprende – Borodin