JobC has asked for the wisdom of the Perl Monks concerning the following question:
I would like to initialize a new field in my CSV to receive extracted data when I parse an existing field. If there was always a result from the parse then I wouldn't have an "Use of uninitialized value in substitution" message later on.
How do I set a dereferenced array to ""?
Am I asking the right Question?
Right now the following doesn't work.
#Initialize to first character of first field, no warnings #Creates extra unneeded data. ($row->[15]) = $row->[0] =~ /(.)/; #This appears to match undefined and sets it to "", warnings #^ * matches null string many times in regex; marked by <--HERE in m/ +(^ * <-- HERE $) / at convertACsv.pl line 86. #Use of uninitialized value in substitution (s///) at convertACsv.pl l +ine 86, <_GEN_0> line 1. $row->[15] =~ s/ (^ *$) //gx; #This appears to match undefined and sets it to "", warnings #Use of uninitialized value in substitution (s///) at convertACsv.pl l +ine 86, <_GEN_0> line 1. $row->[15] =~ s/ (^z) //gx; #oops, dropped the "\" $row->[15] =~ s/ (^\z) //gx; #Why doesn't one of these work? ($row->[15]) = ""; ($row->[15]) = ("");
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Initialize or Match undef without warning
by u65 (Chaplain) on Dec 14, 2015 at 22:35 UTC | |
by JobC (Acolyte) on Dec 14, 2015 at 23:30 UTC | |
by JobC (Acolyte) on Dec 15, 2015 at 00:04 UTC | |
by stevieb (Canon) on Dec 15, 2015 at 00:13 UTC |