Tengo una variable perl $results
que se devuelve de un servicio. Se supone que el valor es una matriz, y $results
debe ser una referencia de matriz. Sin embargo, cuando la matriz tiene solo un elemento, $results
se establecerá en ese valor y no en una matriz referenciada que contenga ese elemento.¿Se puede forzar una referencia escalar o de matriz para que sea una matriz en Perl?
Quiero hacer un bucle foreach
en la matriz esperada. Sin comprobar ref($results) eq 'ARRAY'
, ¿hay alguna manera de tener algo equivalente a lo siguiente:
foreach my $result (@$results) {
# Process $result
}
Eso particular, ejemplo de código funcionará para la referencia, pero se quejará por la simple escalar.
EDIT: Debo aclarar que no hay forma de que cambie lo que devuelve el servicio. El problema es que el valor será escalar cuando solo hay un valor y será una referencia de matriz cuando haya más de un valor.
Este comportamiento hace que quiere gritar y ser como, "Perl ESTÚPIDO!" Pero luego me doy cuenta de que los lenguajes que no requieren esta tontería todavía lo hacen bajo el capó, lo que hace que me moleste un poco menos ... – Rooster