Plus can you believe it doesn't complain about line 1? That's a genuine bug for you. $ cat ss printf "%s"; printf "%s%s", 4; printf "", 7; printf "%s", undef; $ perl -w ss Use of uninitialized value in printf at ss line 2. Use of uninitialized value in printf at ss line 4.