Grokbase
Topics Posts Groups | in
x
[ help ]

Re: lc(undef) is not undef: bug or feature?

View PostFlat  Thread  Threaded | < Prev - Next >
Abigail Re: lc(undef) is not undef: bug or feature?
| +1 vote
[ Profile | Reply to group ] [ Flat  Thread  Threaded ]
On Thu, Jan 24, 2008 at 09:24:08PM +0000, Alberto Sim?es wrote:
> Well, the subject says it all :)
>
> lc(undef) is the empty string.

Of course. What would you expect? It's not different from 1 + undef being
1, and not undef. undef is not like NULL in SQL, where operation upon will
return NULL. In Perl, undef is treated as the empty string if treated
as a string, and as 0 if treated as a number. lc operates on strings,
so lc(undef) will be the same as lc("").

> This might be good, this might be bad.

What isn't good is that it doesn't warn.

> In any case, I think it should be documented.

Where do we stop? Should we document any case where undef is treated
as "" or 0?


Abigail
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (GNU/Linux)

iD8DBQFHmQfjBOh7Ggo6rasRAgFhAJ0X76wj5UTrqYR6LqXsnLwsuKF8sQCeOwOf
PjfTnxhJd2aB+95y4/e/qIs=
=pT13
-----END PGP SIGNATURE-----

Thread : lc(undef) is not undef: bug or feature?
1)
Alberto Simões Well, the subject says it all :) lc(undef) is the empty string. This might be good, this might be...
2)
Andy Armstrong I think the anomaly is that it doesn't cause a warning even with use warnings. Functions generally...
3)
Alberto Simões Just to explain how I found out: while(defined($line = lc(<>))) { But ok, I can put it on two lines...
4)
Abigail Of course. What would you expect? It's not different from 1 + undef being 1, and not undef. undef...
5)
Alberto Simões OK It's true. Well, good point ;)...
6)
Marvin Humphrey This is precisely the kind of situation where I'd hope that Perl would warn if I had warnings...
7)
Marvin Humphrey Oops. I read that backwards. Sorry for the noise. Marvin Humphrey Rectangular Research...
8)
Alberto Simões Use of uninitialized value on... ? Not sure if this was what you asked for. Cheers ambs
9)
Jonathan Rockway Interestingly, some similar cases also don't warn where they should: $ my $foo $ "$foo" Use of...
10)
Michael G Schwern I'll betcha $5 that \L is implemented using the same op as lc()... Yep, toke.c would seem to...
11)
Andy Armstrong Presumably "\L$smoo" and lc $smoo compile to the same thing.
12)
Rafael Garcia-Suarez I've added regression tests for it. I've applied patch for that. All tests pass. #33088. It's a...
spacer
View PostFlat  Thread  Threaded | < Prev - Next >