$ perl -Mwarnings -le " my ( $l, $r ) = split /\s/, 'a b',2; print qq[$l$r\n]; " ab $ perl -Mwarnings -le " my ( $l, $r ) = split /\s/, 'a',2; print qq[$l$r\n]; " Use of uninitialized value $r in concatenation (.) or string at -e line 1. a $ perl -Mdiagnostics -Mwarnings -le " my ( $l, $r ) = split /\s/, 'a',2; print qq[$l$r\n]; " Use of uninitialized value $r in concatenation (.) or string at -e line 1 (#1) (W uninitialized) An undefined value was used as if it were already defined. It was interpreted as a "" or a 0, but maybe it was a mistake. To suppress this warning assign a defined value to your variables. ...*snip*... a #### no warnings 'uninitialized';