Ho una variabile perl $results
che viene restituita da un servizio. Il valore dovrebbe essere un array e $results
dovrebbe essere un riferimento di matrice. Tuttavia, quando l'array contiene solo un elemento, $results
verrà impostato su tale valore e non su un array referenziato che contiene quell'elemento.Potete forzare uno scalar o un array ref ad essere una matrice in Perl?
Voglio fare un ciclo foreach
sulla matrice prevista. Senza controllare ref($results) eq 'ARRAY'
, c'è qualche modo per avere qualcosa di equivalente a quanto segue:
foreach my $result (@$results) {
# Process $result
}
Questo esempio di codice particolare lavorerà per il riferimento, ma si lamenterà per la semplice scalare.
EDIT: Vorrei chiarire che non c'è modo per me di cambiare ciò che viene restituito dal servizio. Il problema è che il valore sarà uno scalare quando c'è un solo valore e sarà un riferimento di matrice quando c'è più di un valore.
Questo comportamento mi fa venire voglia di urlare e di essere come "PERL STUPIDO!" Ma poi mi rendo conto che le lingue che non richiedono questa assurdità lo fanno ancora sotto il cofano, il che mi dà fastidio in meno ... – Rooster