Reputation: 6041
My list (@degree) is built from a SQL command. The NVL command in the SQL isn't working, neither are tests such as:
if (@degree[$i] == "")
if (@degree[$i] == " ")
if (@degree[$i] == '')
if (@degree[$i] == -1)
if (@degree[$i] == 0)
if (@degree[$i] == ())
if (@degree[$i] == undef)
$i is a counter variable in a for loop. Basically it goes through and grabs unique degrees from a table and ends up creating ("AFA", "AS", "AAS", "", "BS")
. The list is not always this long, and the empty element is not always in that position 3.
Can anyone help?
I want to either test during the for loop, or after the loop completes for where this empty element is and then replace it with the word, "OTHER".
Thanks for anything -Ken
Upvotes: 1
Views: 7474
Reputation: 1280
Everything that Paul said. And, if you need an example:
my @degree = ('AFA', 'AS', 'AAS', '', 'BS');
$_ ||= 'OTHER' for @degree;
print join ' ' => @degree; # prints 'AFA AS AAS OTHER BS'
Upvotes: 6
Reputation: 51147
If its actually a null in the database, try COALESCE
SELECT COALESCE(column, 'no value') AS column FROM whatever ...
That's the SQL-standard way to do it.
Upvotes: 1
Reputation: 182782
First of all, the ith element in an array is $degree[$i], not @degree[$i]. Second, "==" is for numerical comparisons - use "eq" for lexical comparisons. Third of all, try if (defined($degree[$i]))
Upvotes: 8