with str_three and str_four the resulting array is empty (or may I say "undefined")No, you may not.
Once you execute my @array = split ( "," , $_ );, @array has a defined value, period. A variable with an undefined (or uninitialized, for that matter) value is a variable which has either never had a value assigned to it or has had its value explicitly removed. Your split assigns a value to @array, therefore @array is not undefined. (If split could return undef, then @array could potentially end up undefined, but split doesn't do that. Even split ",", undef; returns an empty list, which is a defined value.)
If you want to preserve the empty (not undefined!) values in your input strings, give split a -1 (or any negative integer) as an additional parameter to tell it to keep all values, including leading/trailing empty values:
$ perl -w -E '@values = split ",", "1,2,3,4", -1; say join ",", @value +s' 1,2,3,4 $ perl -w -E '@values = split ",", ",,3,", -1; say join ",", @values' ,,3, $ perl -w -E '@values = split ",", ",,,", -1; say join ",", @values' ,,,
In reply to Re: How to differentiate an empty array from an unitialized one?
by dsheroh
in thread How to differentiate an empty array from an unitialized one?
by iatros
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |