http://www.perlmonks.org?node_id=883157

onegative has asked for the wisdom of the Perl Monks concerning the following question:

Good day Monks,

I am trying to determine if what I am doing is appropriate or if there are easier/better ways. I have a huge variable list that is broken down into scalars, arrays and hashs. I am extracting those values from xml documents that are non-standard and differ one to another so the variables from one document to another may or may not have data present. When passing variables that may be undef or "" (empty) values, I am trying to make sure the field in which the variable will populate into a database contains "null". Not for a particular requirement but because I fear that somewhere through the code an array value is missing and therefore shifts the value of another field into a placeholder of a different field. I understand that if I were a Monk I would have probably been able to figure out a more elegant way to maintain such field integrity but unfortunately I am not capable at this point. Thus I am going to use the following function to populate a "null" value into undef or empty variables and wanted to know if an obvious problem may exist with solution or is there an easier way to accomplish the same task? My assumption is that undef variables would be translated into "" (empty string) upon its use within Perl and not require the use of the defined function. Thanks in advance for any responses.

Danny

use strict; my $out; my $COUNT = 0; my $PORT = undef; my $PATH = "/usr/local"; my $CODE = ""; my $COUNT = ifnil($COUNT); my $PORT = ifnil($PORT); my $PATH = ifnil($PATH); my $CODE = ifnil($CODE); print "COUNT: $COUNT\nPORT: $PORT\nPATH: $PATH\nCODE: $CODE\n"; sub ifnil { my ($value) = @_; my $null = "null"; if ( $value eq "" ) { $out = $null; } else { $out = $value; } return $out; }