Just a quick note to document a funny error.

I tried to remove trailing empty strings from an array of strings with the following code.

pop @msgstr while !length($msgstr[-1]);

This didn't work. Can you guess why? Solution under the fold.

Comment on How not to remove trailing empty strings from an array
Select or Download Code
Replies are listed 'Best First'.
Re: How not to remove trailing empty strings from an array
by Neighbour (Friar) on Apr 16, 2013 at 14:32 UTC
    Close, but subtly different (imho), it
    is an infinite loop if @msgstr becomes the empty list because then -1 returns undef, which causes length to return undef, which is false and gets negated.
    You could fix this by using pop @msgstr while !length($msgstr[-1]//0); instead (perl v5.10 and up)
Re: How not to remove trailing empty strings from an array
by LanX (Canon) on Apr 16, 2013 at 17:17 UTC