2012-10-09 9 views
20

UnderDlaczego mnożenie ciągu Perla nie ostrzeże na undef?

use strict; 
use warnings; 
my $foo = undef; 

wyrażenia

$foo . '' 

i

"$foo" 

zarówno produkować

Use of uninitialized value $foo in ... at ... 

ale daje następujące wyrażenie th e pusty ciąg bez ostrzeżenia:

Ktoś wie dlaczego? Mam na myśli, że fajnie jest mieć fajny idiom strunyfikacyjny ($_ x 1 jest znacznie krótszy niż defined ? "$_" : ''), ale wydaje się nieco dziwny.

+2

Jestem pewien, że nie było to zamierzone, przynajmniej na początku. – ikegami

+0

'perldoc perlop' (szukaj" Multiplikatywnych operatorów ") nie mówi nic o zachowaniu' x' z operandem 'undef'. Zgadzam się, że to prawdopodobnie niezamierzone. –

Odpowiedz

9

Kiedyś zobaczyłem przedstawienie ze sceną w szkole prawniczej. Instruktor przedstawił swoim studentom dwa podobne przypadki i zapytał, dlaczego doprowadziły one do różnych orzeczeń. To dlatego, że orzeczenia zostały wydane przez sędziów, a sędziowie to ludzie, wyjaśnił ostatecznie.

To powinno ostrzec. Twórcy pracujący nad Perlem to ludzie. Uruchom aplikację perlbug, aby wysłać zgłoszenie błędu, jeśli chcesz.

+1

+1 za mądrość filmową/telewizyjną. – pilcrow

Powiązane problemy