Home » Questions » Computers [ Ask a new question ]

Can you force either a scalar or array ref to be an array in Perl?

Can you force either a scalar or array ref to be an array in Perl?

"I have a perl variable $results that gets returned from a service. The value is supposed to be an array, and $results should be an array reference. However, when the array has only one item in it, $results will be set to that value, and not a referenced array that contains that one item.

I want to do a foreach loop on the expected array. Without checking ref($results) eq 'ARRAY', is there any way to have something equivalent to the following:

foreach my $result (@$results) {
# Process $result
}

That particular code sample will work for the reference, but will complain for the simple scalar.

EDIT: I should clarify that there is no way for me to change what is returned from the service. The problem is that the value will be a scalar when there is only one value and it will be an array reference when there is more than one value."

Asked by: Guest | Views: 442
Total answers/comments: 1
Guest [Entry]

"im not sure there's any other way than:

$result = [ $result ] if ref($result) ne 'ARRAY';
foreach ....."