$x =~ /\s/
doesn't work. It should be
$x =~ /\s\z/
Bonus: The speed of fixed version won't depend on the length of the string like the broken one did.
if (rindex($x," ") == 0  rindex($x,"\r") == 0  rindex($x,"\n") == 0  rindex($x,"\t") == 0)
doesn't work. It should be
if (rindex($x," ") == length($x)1  rindex($x,"\n") == length($x)1  rindex($x,"\t") == length($x)1  rindex($x,"\r") == length($x)1)
Or just
my $ch = substr($x, 1); $ch eq " "  $ch eq "\n"  $ch eq "\t"  $ch eq "\r"
And then there's
length($x) && index(" \n\t\r", substr($x, 1)) >= 0
You should be concentrating on writing code that actually works before worrying about operations that take 0.00001 second.
