2012-10-09 15 views
20

Perl'in string çarpımı neden undef'de uyarılmıyor?

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

altında ifadeler

$foo . '' 

ve

"$foo" 

hem

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

üretmek ancak aşağıdaki sentezleme th verir uyarı olmadan e boş dize:

$foo x 1 

Herkes nedenini biliyor mu? Demek istediğim, güzel bir çekiliş deyimine sahip olmak çok güzel ($_ x 1defined ? "$_" : '''dan çok daha kısa), ama biraz garip geliyor.

+2

En azından başlangıçta kasıtlı olmadığından eminim. – ikegami

+0

'perldoc perlop' (" Çoğaltıcı İşleçler "için arama)" x "in bir" undef "sol işleneni ile davranışı hakkında hiçbir şey söylemez. Muhtemelen istemeden katılıyorum. Film/televizyon bilgisi için –

cevap

9

Bir defasında bir hukuk fakültesi sınıfındaki bir sahneyi izledim. Öğretmen, öğrencilerine iki benzer vaka sunmuş ve neden farklı kararlarla sonuçlandığını sormuştur. Çünkü kararlar hakimler tarafından yapıldı ve yargıçlar insanlardı, sonunda açıkladı.

Bu uyarı yapmalıdır. Perl üzerinde çalışan geliştiriciler insanlardır. İsterseniz bir hata raporu göndermek için perlbug'u çalıştırın.

+1

+1. – pilcrow